knife-openstack 1.3.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/.github/ISSUE_TEMPLATE.md +21 -0
  3. data/.gitignore +5 -0
  4. data/.travis.yml +9 -7
  5. data/CHANGELOG.md +174 -92
  6. data/Gemfile +15 -3
  7. data/README.md +96 -68
  8. data/Rakefile +19 -6
  9. data/knife-openstack.gemspec +17 -15
  10. data/lib/chef/knife/cloud/openstack_server_create_options.rb +36 -35
  11. data/lib/chef/knife/cloud/openstack_service.rb +7 -6
  12. data/lib/chef/knife/cloud/openstack_service_options.rb +18 -17
  13. data/lib/chef/knife/openstack_flavor_list.rb +11 -10
  14. data/lib/chef/knife/openstack_floating_ip_allocate.rb +13 -12
  15. data/lib/chef/knife/openstack_floating_ip_associate.rb +9 -8
  16. data/lib/chef/knife/openstack_floating_ip_disassociate.rb +9 -8
  17. data/lib/chef/knife/openstack_floating_ip_list.rb +10 -9
  18. data/lib/chef/knife/openstack_floating_ip_release.rb +7 -6
  19. data/lib/chef/knife/openstack_group_list.rb +13 -12
  20. data/lib/chef/knife/openstack_helpers.rb +8 -7
  21. data/lib/chef/knife/openstack_image_list.rb +14 -13
  22. data/lib/chef/knife/openstack_network_list.rb +10 -9
  23. data/lib/chef/knife/openstack_server_create.rb +57 -56
  24. data/lib/chef/knife/openstack_server_delete.rb +7 -6
  25. data/lib/chef/knife/openstack_server_list.rb +16 -15
  26. data/lib/chef/knife/openstack_server_show.rb +17 -16
  27. data/lib/chef/knife/openstack_volume_list.rb +10 -9
  28. data/lib/knife-openstack/version.rb +3 -2
  29. data/spec/functional/flavor_list_func_spec.rb +13 -12
  30. data/spec/functional/floating_ip_list_func_spec.rb +14 -13
  31. data/spec/functional/group_list_func_spec.rb +29 -28
  32. data/spec/functional/image_list_func_spec.rb +15 -14
  33. data/spec/functional/network_list_func_spec.rb +13 -12
  34. data/spec/functional/server_create_func_spec.rb +29 -28
  35. data/spec/functional/server_delete_func_spec.rb +18 -17
  36. data/spec/functional/server_list_func_spec.rb +43 -42
  37. data/spec/functional/server_show_func_spec.rb +7 -6
  38. data/spec/functional/volume_list_func_spec.rb +12 -11
  39. data/spec/integration/cleanup.rb +6 -5
  40. data/spec/integration/openstack_spec.rb +287 -286
  41. data/spec/spec_context.rb +10 -9
  42. data/spec/spec_helper.rb +38 -37
  43. data/spec/unit/openstack_flavor_list_spec.rb +6 -5
  44. data/spec/unit/openstack_floating_ip_allocate_spec.rb +14 -13
  45. data/spec/unit/openstack_floating_ip_associate_spec.rb +11 -10
  46. data/spec/unit/openstack_floating_ip_disassociate_spec.rb +12 -11
  47. data/spec/unit/openstack_floating_ip_list_spec.rb +6 -5
  48. data/spec/unit/openstack_floating_ip_release_spec.rb +13 -12
  49. data/spec/unit/openstack_group_list_spec.rb +11 -10
  50. data/spec/unit/openstack_image_list_spec.rb +6 -5
  51. data/spec/unit/openstack_network_list_spec.rb +8 -7
  52. data/spec/unit/openstack_server_create_spec.rb +131 -130
  53. data/spec/unit/openstack_server_delete_spec.rb +8 -7
  54. data/spec/unit/openstack_server_list_spec.rb +6 -5
  55. data/spec/unit/openstack_server_show_spec.rb +10 -9
  56. data/spec/unit/openstack_service_spec.rb +26 -25
  57. data/spec/unit/openstack_volume_list_spec.rb +6 -5
  58. metadata +9 -105
data/Rakefile CHANGED
@@ -1,14 +1,27 @@
1
+ # frozen_string_literal: true
1
2
  # Author:: Kaustubh Deorukhkar (<kaustubh@clogeny.com>)
2
- # Copyright:: Copyright (c) 2013 Chef Software, Inc.
3
+ # Copyright:: Copyright (c) 2013-2016 Chef Software, Inc.
3
4
 
4
- require 'bundler'
5
- require 'bundler/setup'
6
- require 'bundler/gem_tasks'
7
- require 'rubocop/rake_task'
8
- require 'rspec/core/rake_task'
5
+ require "bundler"
6
+ require "bundler/setup"
7
+ require "bundler/gem_tasks"
8
+ require "chefstyle"
9
+ require "rubocop/rake_task"
10
+ require "rspec/core/rake_task"
11
+ require "github_changelog_generator/task"
12
+ require "knife-openstack/version"
9
13
 
10
14
  RuboCop::RakeTask.new
11
15
 
12
16
  RSpec::Core::RakeTask.new(:spec)
13
17
 
14
18
  task default: [:rubocop, :spec]
19
+
20
+ GitHubChangelogGenerator::RakeTask.new :changelog do |config|
21
+ config.future_release = Knife::OpenStack::VERSION
22
+ config.max_issues = 0
23
+ config.add_issues_wo_labels = false
24
+ config.enhancement_labels = "enhancement,Enhancement,New Feature,Feature".split(",")
25
+ config.bug_labels = "bug,Bug,Improvement,Upstream Bug".split(",")
26
+ config.exclude_labels = "duplicate,question,invalid,wontfix,no_changelog,Exclude From Changelog,Question,Discussion,Tech Cleanup".split(",")
27
+ end
@@ -1,28 +1,30 @@
1
1
  # -*- encoding: utf-8 -*-
2
- $LOAD_PATH.push File.expand_path('../lib', __FILE__)
3
- require 'knife-openstack/version'
2
+ # frozen_string_literal: true
3
+ $LOAD_PATH.push File.expand_path("../lib", __FILE__)
4
+ require "knife-openstack/version"
4
5
 
5
6
  Gem::Specification.new do |s|
6
- s.name = 'knife-openstack'
7
+ s.name = "knife-openstack"
7
8
  s.version = Knife::OpenStack::VERSION
8
- s.version = "#{s.version}-alpha-#{ENV['TRAVIS_BUILD_NUMBER']}" if ENV['TRAVIS']
9
+ s.version = "#{s.version}-alpha-#{ENV['TRAVIS_BUILD_NUMBER']}" if ENV["TRAVIS"]
9
10
  s.platform = Gem::Platform::RUBY
10
11
  s.has_rdoc = true
11
- s.extra_rdoc_files = ['README.md', 'LICENSE']
12
- s.authors = ['JJ Asghar']
13
- s.email = ['jj@chef.io']
14
- s.homepage = 'https://github.com/chef/knife-openstack'
15
- s.summary = 'A Chef knife plugin for OpenStack clouds.'
16
- s.description = 'A Chef knife plugin for OpenStack clouds.'
12
+ s.extra_rdoc_files = ["README.md", "LICENSE"]
13
+ s.authors = ["JJ Asghar"]
14
+ s.email = ["jj@chef.io"]
15
+ s.homepage = "https://github.com/chef/knife-openstack"
16
+ s.summary = "A Chef knife plugin for OpenStack clouds."
17
+ s.description = "A Chef knife plugin for OpenStack clouds."
18
+ s.license = "Apache-2.0"
17
19
 
18
20
  s.files = `git ls-files`.split("\n")
19
21
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
22
  s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
21
- s.require_paths = ['lib']
23
+ s.require_paths = ["lib"]
22
24
 
23
- s.add_dependency 'fog', '~> 1.23'
24
- s.add_dependency 'chef', '>= 11'
25
- s.add_dependency 'knife-cloud', '~> 1.2.0'
25
+ s.required_ruby_version = ">= 2.2.2"
26
26
 
27
- %w(bundler rubocop rake rspec-core rspec-expectations rspec-mocks rspec_junit_formatter).each { |gem| s.add_development_dependency gem }
27
+ s.add_dependency "fog", "~> 1.23"
28
+ s.add_dependency "chef", ">= 12"
29
+ s.add_dependency "knife-cloud", "~> 1.2.0"
28
30
  end
@@ -1,5 +1,6 @@
1
1
 
2
- require 'chef/knife/cloud/server/create_options'
2
+ # frozen_string_literal: true
3
+ require "chef/knife/cloud/server/create_options"
3
4
 
4
5
  class Chef
5
6
  class Knife
@@ -11,72 +12,72 @@ class Chef
11
12
 
12
13
  # Openstack Server create params.
13
14
  option :private_network,
14
- long: '--openstack-private-network',
15
- description: 'Use the private IP for bootstrapping rather than the public IP',
15
+ long: "--openstack-private-network",
16
+ description: "Use the private IP for bootstrapping rather than the public IP",
16
17
  boolean: true,
17
18
  default: false
18
19
 
19
20
  option :openstack_floating_ip,
20
- short: '-a [IP]',
21
- long: '--openstack-floating-ip [IP]',
22
- default: '-1',
23
- description: 'Request to associate a floating IP address to the new OpenStack node. Assumes IPs have been allocated to the project. Specific IP is optional.'
21
+ short: "-a [IP]",
22
+ long: "--openstack-floating-ip [IP]",
23
+ default: "-1",
24
+ description: "Request to associate a floating IP address to the new OpenStack node. Assumes IPs have been allocated to the project. Specific IP is optional."
24
25
 
25
26
  option :openstack_volumes,
26
- long: '--openstack-volumes VOLUME1,VOLUME2,VOLUME3',
27
- description: 'Comma separated list of the UUID(s) of the volume(s) to attach to the server',
28
- proc: proc { |volumes| volumes.split(',') }
27
+ long: "--openstack-volumes VOLUME1,VOLUME2,VOLUME3",
28
+ description: "Comma separated list of the UUID(s) of the volume(s) to attach to the server",
29
+ proc: proc { |volumes| volumes.split(",") }
29
30
 
30
31
  option :openstack_scheduler_hints,
31
- long: '--scheduler-hints HINTS',
32
- description: 'A scheduler group hint to OpenStack',
32
+ long: "--scheduler-hints HINTS",
33
+ description: "A scheduler group hint to OpenStack",
33
34
  proc: proc { |i| Chef::Config[:knife][:openstack_scheduler_hints] = i }
34
35
 
35
36
  option :openstack_security_groups,
36
- short: '-G X,Y,Z',
37
- long: '--openstack-groups X,Y,Z',
38
- description: 'The security groups for this server',
39
- default: ['default'],
40
- proc: proc { |groups| groups.split(',') }
37
+ short: "-G X,Y,Z",
38
+ long: "--openstack-groups X,Y,Z",
39
+ description: "The security groups for this server",
40
+ default: ["default"],
41
+ proc: proc { |groups| groups.split(",") }
41
42
 
42
43
  option :openstack_ssh_key_id,
43
- short: '-S KEY',
44
- long: '--openstack-ssh-key-id KEY',
45
- description: 'The OpenStack SSH keypair id',
44
+ short: "-S KEY",
45
+ long: "--openstack-ssh-key-id KEY",
46
+ description: "The OpenStack SSH keypair id",
46
47
  proc: proc { |key| Chef::Config[:knife][:openstack_ssh_key_id] = key }
47
48
 
48
49
  option :user_data,
49
- long: '--user-data USER_DATA',
50
- description: 'The file path containing user data information for this server',
50
+ long: "--user-data USER_DATA",
51
+ description: "The file path containing user data information for this server",
51
52
  proc: proc { |user_data| open(user_data, &:read) }
52
53
 
53
54
  option :bootstrap_network,
54
- long: '--bootstrap-network NAME',
55
- default: 'public',
55
+ long: "--bootstrap-network NAME",
56
+ default: "public",
56
57
  description: "Specify network for bootstrapping. Default is 'public'."
57
58
 
58
59
  option :network,
59
- long: '--no-network',
60
+ long: "--no-network",
60
61
  boolean: true,
61
62
  default: true,
62
63
  description: "Use first available network for bootstrapping if 'public' and 'private' are unavailable."
63
64
 
64
65
  option :network_ids,
65
- long: '--network-ids NETWORK_ID_1,NETWORK_ID_2,NETWORK_ID_3',
66
- description: 'Comma separated list of the UUID(s) of the network(s) for the server to attach',
67
- proc: proc { |networks| networks.split(',') }
66
+ long: "--network-ids NETWORK_ID_1,NETWORK_ID_2,NETWORK_ID_3",
67
+ description: "Comma separated list of the UUID(s) of the network(s) for the server to attach",
68
+ proc: proc { |networks| networks.split(",") }
68
69
 
69
70
  option :availability_zone,
70
- short: '-Z ZONE_NAME',
71
- long: '--availability-zone ZONE_NAME',
72
- description: 'The availability zone for this server',
71
+ short: "-Z ZONE_NAME",
72
+ long: "--availability-zone ZONE_NAME",
73
+ description: "The availability zone for this server",
73
74
  proc: proc { |z| Chef::Config[:knife][:availability_zone] = z }
74
75
 
75
76
  option :metadata,
76
- short: '-M X=1',
77
- long: '--metadata X=1',
78
- description: 'Metadata information for this server (may pass multiple times)',
79
- proc: proc { |data| Chef::Config[:knife][:metadata] ||= {}; Chef::Config[:knife][:metadata].merge!(data.split('=')[0] => data.split('=')[1]) }
77
+ short: "-M X=1",
78
+ long: "--metadata X=1",
79
+ description: "Metadata information for this server (may pass multiple times)",
80
+ proc: proc { |data| Chef::Config[:knife][:metadata] ||= {}; Chef::Config[:knife][:metadata].merge!(data.split("=")[0] => data.split("=")[1]) }
80
81
  end
81
82
  end
82
83
  end
@@ -1,10 +1,11 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Author:: Siddheshwar More (<siddheshwar.more@clogeny.com>)
3
4
  # Author:: Kaustubh Deorukhkar (<kaustubh@clogeny.com>)
4
5
  # Copyright:: Copyright (c) 2013 Chef Software, Inc.
5
6
  #
6
7
 
7
- require 'chef/knife/cloud/fog/service'
8
+ require "chef/knife/cloud/fog/service"
8
9
 
9
10
  class Chef
10
11
  class Knife
@@ -35,7 +36,7 @@ class Chef
35
36
  if servers.length > 1
36
37
  error_message = "Multiple server matches found for '#{search_term}', use an instance_id to be more specific."
37
38
  ui.fatal(error_message)
38
- fail CloudExceptions::ValidationError, error_message
39
+ raise CloudExceptions::ValidationError, error_message
39
40
  else
40
41
  servers.first
41
42
  end
@@ -47,10 +48,10 @@ class Chef
47
48
  def get_auth_params
48
49
  load_fog_gem
49
50
  params = {
50
- provider: 'OpenStack',
51
+ provider: "OpenStack",
51
52
  connection_options: {
52
- ssl_verify_peer: !Chef::Config[:knife][:openstack_insecure]
53
- }
53
+ ssl_verify_peer: !Chef::Config[:knife][:openstack_insecure],
54
+ },
54
55
  }
55
56
 
56
57
  (
@@ -58,7 +59,7 @@ class Chef
58
59
  Fog::Compute::OpenStack.recognized -
59
60
  [:openstack_api_key]
60
61
  ).each do |k|
61
- next unless k.to_s.start_with?('openstack')
62
+ next unless k.to_s.start_with?("openstack")
62
63
  params[k] = Chef::Config[:knife][k]
63
64
  end
64
65
  params[:openstack_api_key] = Chef::Config[:knife][:openstack_password] || Chef::Config[:knife][:openstack_api_key]
@@ -1,4 +1,5 @@
1
- require 'chef/knife/cloud/fog/options'
1
+ # frozen_string_literal: true
2
+ require "chef/knife/cloud/fog/options"
2
3
  class Chef
3
4
  class Knife
4
5
  class Cloud
@@ -8,41 +9,41 @@ class Chef
8
9
  include FogOptions
9
10
  # Openstack Connection params.
10
11
  option :openstack_username,
11
- short: '-A USERNAME',
12
- long: '--openstack-username KEY',
13
- description: 'Your OpenStack Username',
12
+ short: "-A USERNAME",
13
+ long: "--openstack-username KEY",
14
+ description: "Your OpenStack Username",
14
15
  proc: proc { |key| Chef::Config[:knife][:openstack_username] = key }
15
16
 
16
17
  option :openstack_password,
17
- short: '-K SECRET',
18
- long: '--openstack-password SECRET',
19
- description: 'Your OpenStack Password',
18
+ short: "-K SECRET",
19
+ long: "--openstack-password SECRET",
20
+ description: "Your OpenStack Password",
20
21
  proc: proc { |key| Chef::Config[:knife][:openstack_password] = key }
21
22
 
22
23
  option :openstack_tenant,
23
- short: '-T NAME',
24
- long: '--openstack-tenant NAME',
25
- description: 'Your OpenStack Tenant NAME',
24
+ short: "-T NAME",
25
+ long: "--openstack-tenant NAME",
26
+ description: "Your OpenStack Tenant NAME",
26
27
  proc: proc { |key| Chef::Config[:knife][:openstack_tenant] = key }
27
28
 
28
29
  option :openstack_auth_url,
29
- long: '--openstack-api-endpoint ENDPOINT',
30
- description: 'Your OpenStack API endpoint',
30
+ long: "--openstack-api-endpoint ENDPOINT",
31
+ description: "Your OpenStack API endpoint",
31
32
  proc: proc { |endpoint| Chef::Config[:knife][:openstack_auth_url] = endpoint }
32
33
 
33
34
  option :openstack_endpoint_type,
34
- long: '--openstack-endpoint-type ENDPOINT_TYPE',
35
- description: 'OpenStack endpoint type to use (publicURL, internalURL, adminURL)',
35
+ long: "--openstack-endpoint-type ENDPOINT_TYPE",
36
+ description: "OpenStack endpoint type to use (publicURL, internalURL, adminURL)",
36
37
  proc: proc { |type| Chef::Config[:knife][:openstack_endpoint_type] = type }
37
38
 
38
39
  option :openstack_insecure,
39
- long: '--insecure',
40
- description: 'Ignore SSL certificate on the Auth URL',
40
+ long: "--insecure",
41
+ description: "Ignore SSL certificate on the Auth URL",
41
42
  boolean: true,
42
43
  default: false,
43
44
  proc: proc { |key| Chef::Config[:knife][:openstack_insecure] = key }
44
45
  end
45
- end
46
+ end
46
47
  end
47
48
  end
48
49
  end
@@ -1,9 +1,10 @@
1
+ # frozen_string_literal: true
1
2
  # Author:: Prabhu Das (<prabhu.das@clogeny.com>)
2
3
  # Copyright:: Copyright (c) 2014 Chef Software, Inc.
3
4
 
4
- require 'chef/knife/cloud/list_resource_command'
5
- require 'chef/knife/openstack_helpers'
6
- require 'chef/knife/cloud/openstack_service_options'
5
+ require "chef/knife/cloud/list_resource_command"
6
+ require "chef/knife/openstack_helpers"
7
+ require "chef/knife/cloud/openstack_service_options"
7
8
 
8
9
  class Chef
9
10
  class Knife
@@ -12,18 +13,18 @@ class Chef
12
13
  include OpenstackHelpers
13
14
  include OpenstackServiceOptions
14
15
 
15
- banner 'knife openstack flavor list (options)'
16
+ banner "knife openstack flavor list (options)"
16
17
 
17
18
  def before_exec_command
18
19
  # set columns_with_info map
19
20
  @columns_with_info = [
20
- { label: 'Name', key: 'name' },
21
- { label: 'ID', key: 'id' },
22
- { label: 'Virtual CPUs', key: 'vcpus' },
23
- { label: 'RAM', key: 'ram', value_callback: method(:ram_in_mb) },
24
- { label: 'Disk', key: 'disk', value_callback: method(:disk_in_gb) }
21
+ { label: "Name", key: "name" },
22
+ { label: "ID", key: "id" },
23
+ { label: "Virtual CPUs", key: "vcpus" },
24
+ { label: "RAM", key: "ram", value_callback: method(:ram_in_mb) },
25
+ { label: "Disk", key: "disk", value_callback: method(:disk_in_gb) },
25
26
  ]
26
- @sort_by_field = 'name'
27
+ @sort_by_field = "name"
27
28
  end
28
29
 
29
30
  def query_resource
@@ -1,9 +1,10 @@
1
+ # frozen_string_literal: true
1
2
  # Author:: Vasundhara Jagdale (<vasundhara.jagdale@clogeny.com>)
2
3
  # Copyright:: Copyright (c) 2015 Chef Software, Inc.
3
4
 
4
- require 'chef/knife/openstack_helpers'
5
- require 'chef/knife/cloud/openstack_service_options'
6
- require 'chef/knife/cloud/command'
5
+ require "chef/knife/openstack_helpers"
6
+ require "chef/knife/cloud/openstack_service_options"
7
+ require "chef/knife/cloud/command"
7
8
 
8
9
  class Chef
9
10
  class Knife
@@ -12,12 +13,12 @@ class Chef
12
13
  include OpenstackHelpers
13
14
  include OpenstackServiceOptions
14
15
 
15
- banner 'knife openstack floating_ip allocate (options)'
16
+ banner "knife openstack floating_ip allocate (options)"
16
17
 
17
18
  option :pool,
18
- short: '-p POOL',
19
- long: '--pool POOL',
20
- description: 'Floating IP pool to allocate from.',
19
+ short: "-p POOL",
20
+ long: "--pool POOL",
21
+ description: "Floating IP pool to allocate from.",
21
22
  proc: proc { |key| Chef::Config[:knife][:pool] = key }
22
23
 
23
24
  def execute_command
@@ -25,11 +26,11 @@ class Chef
25
26
  end
26
27
 
27
28
  def after_exec_command
28
- @columns_with_info = [{ label: 'ID', value: @resource['floating_ip']['id'].to_s },
29
- { label: 'Instance ID', value: @resource['floating_ip']['instance_id'].to_s },
30
- { label: 'Floating IP', value: @resource['floating_ip']['ip'].to_s },
31
- { label: 'Fixed IP', value: @resource['floating_ip']['fixed_ip'].to_s },
32
- { label: 'Pool', value: @resource['floating_ip']['pool'].to_s }
29
+ @columns_with_info = [{ label: "ID", value: @resource["floating_ip"]["id"].to_s },
30
+ { label: "Instance ID", value: @resource["floating_ip"]["instance_id"].to_s },
31
+ { label: "Floating IP", value: @resource["floating_ip"]["ip"].to_s },
32
+ { label: "Fixed IP", value: @resource["floating_ip"]["fixed_ip"].to_s },
33
+ { label: "Pool", value: @resource["floating_ip"]["pool"].to_s },
33
34
  ]
34
35
  @service.server_summary(nil, @columns_with_info)
35
36
  end
@@ -1,10 +1,11 @@
1
+ # frozen_string_literal: true
1
2
  # Author:: Vasundhara Jagdale (<vasundhara.jagdale@clogeny.com>)
2
3
  # Copyright:: Copyright (c) 2015 Chef Software, Inc.
3
4
 
4
- require 'chef/knife/openstack_helpers'
5
- require 'chef/knife/cloud/openstack_service_options'
6
- require 'chef/knife/cloud/openstack_service'
7
- require 'chef/knife/cloud/command'
5
+ require "chef/knife/openstack_helpers"
6
+ require "chef/knife/cloud/openstack_service_options"
7
+ require "chef/knife/cloud/openstack_service"
8
+ require "chef/knife/cloud/command"
8
9
 
9
10
  class Chef
10
11
  class Knife
@@ -13,11 +14,11 @@ class Chef
13
14
  include OpenstackHelpers
14
15
  include OpenstackServiceOptions
15
16
 
16
- banner 'knife openstack floating_ip associate IP (options)'
17
+ banner "knife openstack floating_ip associate IP (options)"
17
18
 
18
19
  option :instance_id,
19
- long: '--instance-id ID',
20
- description: 'Instance id to associate it with.',
20
+ long: "--instance-id ID",
21
+ description: "Instance id to associate it with.",
21
22
  proc: proc { |key| Chef::Config[:knife][:instance_id] = key },
22
23
  required: true
23
24
 
@@ -25,7 +26,7 @@ class Chef
25
26
  if @name_args[0]
26
27
  floating_ip = @name_args[0]
27
28
  else
28
- ui.error 'Please provide Floating IP to associate with.'
29
+ ui.error "Please provide Floating IP to associate with."
29
30
  exit 1
30
31
  end
31
32
 
@@ -1,10 +1,11 @@
1
+ # frozen_string_literal: true
1
2
  # Author:: Vasundhara Jagdale (<vasundhara.jagdale@clogeny.com>)
2
3
  # Copyright:: Copyright (c) 2015 Chef Software, Inc.
3
4
 
4
- require 'chef/knife/openstack_helpers'
5
- require 'chef/knife/cloud/openstack_service_options'
6
- require 'chef/knife/cloud/openstack_service'
7
- require 'chef/knife/cloud/command'
5
+ require "chef/knife/openstack_helpers"
6
+ require "chef/knife/cloud/openstack_service_options"
7
+ require "chef/knife/cloud/openstack_service"
8
+ require "chef/knife/cloud/command"
8
9
 
9
10
  class Chef
10
11
  class Knife
@@ -13,11 +14,11 @@ class Chef
13
14
  include OpenstackHelpers
14
15
  include OpenstackServiceOptions
15
16
 
16
- banner 'knife openstack floating_ip disassociate IP (options)'
17
+ banner "knife openstack floating_ip disassociate IP (options)"
17
18
 
18
19
  option :instance_id,
19
- long: '--instance-id ID',
20
- description: 'Instance id to disassociate with.',
20
+ long: "--instance-id ID",
21
+ description: "Instance id to disassociate with.",
21
22
  proc: proc { |key| Chef::Config[:knife][:instance_id] = key },
22
23
  required: true
23
24
 
@@ -25,7 +26,7 @@ class Chef
25
26
  if @name_args[0]
26
27
  floating_ip = @name_args[0]
27
28
  else
28
- ui.error 'Please provide Floating IP to disassociate.'
29
+ ui.error "Please provide Floating IP to disassociate."
29
30
  exit 1
30
31
  end
31
32
  instance_id = locate_config_value(:instance_id)