knife-openstack 2.1.0 → 4.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +5 -5
  2. data/lib/chef/knife/cloud/openstack_server_create_options.rb +64 -51
  3. data/lib/chef/knife/cloud/openstack_service.rb +33 -17
  4. data/lib/chef/knife/cloud/openstack_service_options.rb +34 -24
  5. data/lib/chef/knife/openstack_flavor_list.rb +18 -4
  6. data/lib/chef/knife/openstack_floating_ip_allocate.rb +22 -9
  7. data/lib/chef/knife/openstack_floating_ip_associate.rb +24 -11
  8. data/lib/chef/knife/openstack_floating_ip_disassociate.rb +24 -11
  9. data/lib/chef/knife/openstack_floating_ip_list.rb +18 -4
  10. data/lib/chef/knife/openstack_floating_ip_release.rb +16 -4
  11. data/lib/chef/knife/openstack_group_list.rb +21 -4
  12. data/lib/chef/knife/openstack_helpers.rb +20 -4
  13. data/lib/chef/knife/openstack_image_list.rb +22 -8
  14. data/lib/chef/knife/openstack_network_list.rb +18 -4
  15. data/lib/chef/knife/openstack_server_create.rb +38 -37
  16. data/lib/chef/knife/openstack_server_delete.rb +17 -5
  17. data/lib/chef/knife/openstack_server_list.rb +5 -6
  18. data/lib/chef/knife/openstack_server_show.rb +4 -5
  19. data/lib/chef/knife/openstack_volume_list.rb +10 -9
  20. data/lib/knife-openstack/version.rb +2 -2
  21. metadata +16 -216
  22. data/.github/ISSUE_TEMPLATE.md +0 -21
  23. data/.gitignore +0 -32
  24. data/.travis.yml +0 -18
  25. data/CHANGELOG.md +0 -339
  26. data/CONTRIBUTING.MD +0 -164
  27. data/Gemfile +0 -5
  28. data/README.md +0 -179
  29. data/Rakefile +0 -29
  30. data/knife-openstack.gemspec +0 -41
  31. data/spec/functional/flavor_list_func_spec.rb +0 -47
  32. data/spec/functional/floating_ip_list_func_spec.rb +0 -48
  33. data/spec/functional/group_list_func_spec.rb +0 -65
  34. data/spec/functional/image_list_func_spec.rb +0 -53
  35. data/spec/functional/network_list_func_spec.rb +0 -46
  36. data/spec/functional/server_create_func_spec.rb +0 -118
  37. data/spec/functional/server_delete_func_spec.rb +0 -84
  38. data/spec/functional/server_list_func_spec.rb +0 -98
  39. data/spec/functional/server_show_func_spec.rb +0 -46
  40. data/spec/functional/volume_list_func_spec.rb +0 -46
  41. data/spec/integration/cleanup.rb +0 -89
  42. data/spec/integration/config/environment.yml.sample +0 -13
  43. data/spec/integration/openstack_spec.rb +0 -649
  44. data/spec/spec_context.rb +0 -56
  45. data/spec/spec_helper.rb +0 -128
  46. data/spec/unit/openstack_flavor_list_spec.rb +0 -30
  47. data/spec/unit/openstack_floating_ip_allocate_spec.rb +0 -56
  48. data/spec/unit/openstack_floating_ip_associate_spec.rb +0 -40
  49. data/spec/unit/openstack_floating_ip_disassociate_spec.rb +0 -39
  50. data/spec/unit/openstack_floating_ip_list_spec.rb +0 -27
  51. data/spec/unit/openstack_floating_ip_release_spec.rb +0 -49
  52. data/spec/unit/openstack_group_list_spec.rb +0 -44
  53. data/spec/unit/openstack_image_list_spec.rb +0 -32
  54. data/spec/unit/openstack_network_list_spec.rb +0 -39
  55. data/spec/unit/openstack_server_create_spec.rb +0 -449
  56. data/spec/unit/openstack_server_delete_spec.rb +0 -43
  57. data/spec/unit/openstack_server_list_spec.rb +0 -32
  58. data/spec/unit/openstack_server_show_spec.rb +0 -42
  59. data/spec/unit/openstack_service_spec.rb +0 -128
  60. data/spec/unit/openstack_volume_list_spec.rb +0 -30
@@ -1,10 +1,24 @@
1
- # frozen_string_literal: true
1
+ #
2
2
  # Author:: Vasundhara Jagdale (<vasundhara.jagdale@clogeny.com>)
3
- # Copyright:: Copyright (c) 2015 Chef Software, Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
4
18
 
5
- require "chef/knife/openstack_helpers"
6
- require "chef/knife/cloud/openstack_service_options"
7
- require "chef/knife/cloud/openstack_service"
19
+ require_relative "openstack_helpers"
20
+ require_relative "cloud/openstack_service_options"
21
+ require_relative "cloud/openstack_service"
8
22
  require "chef/knife/cloud/command"
9
23
 
10
24
  class Chef
@@ -17,10 +31,9 @@ class Chef
17
31
  banner "knife openstack floating_ip disassociate IP (options)"
18
32
 
19
33
  option :instance_id,
20
- long: "--instance-id ID",
21
- description: "Instance id to disassociate with.",
22
- proc: proc { |key| Chef::Config[:knife][:instance_id] = key },
23
- required: true
34
+ long: "--instance-id ID",
35
+ description: "Instance id to disassociate with.",
36
+ required: true
24
37
 
25
38
  def execute_command
26
39
  if @name_args[0]
@@ -30,9 +43,9 @@ class Chef
30
43
  exit 1
31
44
  end
32
45
 
46
+ response = @service.disassociate_address(config[:instance_id], floating_ip)
33
47
  if response && response.status == 202
34
- response = @service.disassociate_address(instance_id, floating_ip)
35
- ui.info "Floating IP #{floating_ip} disassociated with Instance #{locate_config_value(:instance_id)}"
48
+ ui.info "Floating IP #{floating_ip} disassociated with Instance #{config[:instance_id]}"
36
49
  end
37
50
  end
38
51
  end
@@ -1,10 +1,24 @@
1
- # frozen_string_literal: true
1
+ #
2
2
  # Author:: Vasundhara Jagdale (<vasundhara.jagdale@clogeny.com>)
3
- # Copyright:: Copyright (c) 2015 Chef Software, Inc.
3
+ # Copyright:: Copyright 2015-2020 Chef Software, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
4
18
 
5
19
  require "chef/knife/cloud/list_resource_command"
6
- require "chef/knife/openstack_helpers"
7
- require "chef/knife/cloud/openstack_service_options"
20
+ require_relative "openstack_helpers"
21
+ require_relative "cloud/openstack_service_options"
8
22
 
9
23
  class Chef
10
24
  class Knife
@@ -1,11 +1,23 @@
1
- # frozen_string_literal: true
2
1
  #
3
2
  # Author:: Vasundhara Jagdale (<vasundhara.jagdale@clogeny.com>)
4
- # Copyright:: Copyright (c) 2015 Chef Software, Inc.
3
+ # Copyright:: Copyright 2015-2020 Chef Software, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
5
17
  #
6
18
 
7
- require "chef/knife/openstack_helpers"
8
- require "chef/knife/cloud/openstack_service_options"
19
+ require_relative "openstack_helpers"
20
+ require_relative "cloud/openstack_service_options"
9
21
  require "chef/knife/cloud/command"
10
22
 
11
23
  class Chef
@@ -1,7 +1,24 @@
1
- # frozen_string_literal: true
1
+ #
2
+ # Copyright:: Copyright 2018 Chef Software, Inc.
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
2
18
  require "chef/knife/cloud/list_resource_command"
3
- require "chef/knife/openstack_helpers"
4
- require "chef/knife/cloud/openstack_service_options"
19
+ require_relative "openstack_helpers"
20
+ require_relative "cloud/openstack_service_options"
21
+ require "chef/json_compat"
5
22
 
6
23
  class Chef
7
24
  class Knife
@@ -16,7 +33,7 @@ class Chef
16
33
  @service.connection.security_groups
17
34
  rescue Excon::Errors::BadRequest => e
18
35
  response = Chef::JSONCompat.from_json(e.response.body)
19
- ui.fatal("Unknown server error (#{response['badRequest']['code']}): #{response['badRequest']['message']}")
36
+ ui.fatal("Unknown server error (#{response["badRequest"]["code"]}): #{response["badRequest"]["message"]}")
20
37
  raise e
21
38
  end
22
39
 
@@ -1,5 +1,21 @@
1
- # frozen_string_literal: true
2
- require "chef/knife/cloud/openstack_service_options"
1
+ #
2
+ # Copyright:: Copyright (c) Chef Software Inc.
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require_relative "cloud/openstack_service_options"
3
19
 
4
20
  class Chef
5
21
  class Knife
@@ -18,7 +34,7 @@ class Chef
18
34
  end
19
35
 
20
36
  def create_service_instance
21
- OpenstackService.new
37
+ OpenstackService.new(config: config)
22
38
  end
23
39
 
24
40
  def validate!
@@ -32,7 +48,7 @@ class Chef
32
48
  ips.each do |ip|
33
49
  version = "IPv6" if ip["version"] == 6
34
50
  version = "IPv4" if ip["version"] == 4
35
- info << "#{addresses.keys[0]}:#{version}: #{ip['addr']}"
51
+ info << "#{addresses.keys[0]}:#{version}: #{ip["addr"]}"
36
52
  end
37
53
  end
38
54
  info.join(" ")
@@ -1,10 +1,24 @@
1
- # frozen_string_literal: true
1
+ #
2
2
  # Author:: Prabhu Das (<prabhu.das@clogeny.com>)
3
- # Copyright:: Copyright (c) 2014 Chef Software, Inc.
3
+ # Copyright:: Copyright 2014-2020 Chef Software, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
4
18
 
5
19
  require "chef/knife/cloud/list_resource_command"
6
- require "chef/knife/openstack_helpers"
7
- require "chef/knife/cloud/openstack_service_options"
20
+ require_relative "openstack_helpers"
21
+ require_relative "cloud/openstack_service_options"
8
22
 
9
23
  class Chef
10
24
  class Knife
@@ -16,10 +30,10 @@ class Chef
16
30
  banner "knife openstack image list (options)"
17
31
 
18
32
  option :disable_filter,
19
- long: "--disable-filter",
20
- description: "Disable filtering of the image list. Currently filters names ending with 'initrd' or 'kernel'",
21
- boolean: true,
22
- default: false
33
+ long: "--disable-filter",
34
+ description: "Disable filtering of the image list. Currently filters names ending with 'initrd' or 'kernel'",
35
+ boolean: true,
36
+ default: false
23
37
 
24
38
  def before_exec_command
25
39
  # set resource_filters
@@ -1,10 +1,24 @@
1
- # frozen_string_literal: true
1
+ #
2
2
  # Author:: Prabhu Das (<prabhu.das@clogeny.com>)
3
- # Copyright:: Copyright (c) 2014 Chef Software, Inc.
3
+ # Copyright:: Copyright 2014-2020 Chef Software, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
4
18
 
5
19
  require "chef/knife/cloud/list_resource_command"
6
- require "chef/knife/openstack_helpers"
7
- require "chef/knife/cloud/openstack_service_options"
20
+ require_relative "openstack_helpers"
21
+ require_relative "cloud/openstack_service_options"
8
22
 
9
23
  class Chef
10
24
  class Knife
@@ -1,9 +1,9 @@
1
- # frozen_string_literal: true
2
1
  #
3
- # Author:: Seth Chisamore (<schisamo@getchef.com>)
4
- # Author:: Matt Ray (<matt@getchef.com>)
2
+ # Author:: Seth Chisamore (<schisamo@chef.io>)
3
+ # Author:: Matt Ray (<matt@chef.io>)
5
4
  # Author:: Chirag Jog (<chirag@clogeny.com>)
6
- # Copyright:: Copyright (c) 2011-2014 Chef Software, Inc.
5
+ # Author:: Lance Albertson (<lance@osuosl.org>)
6
+ # Copyright:: Copyright (c) Chef Software Inc.
7
7
  # License:: Apache License, Version 2.0
8
8
  #
9
9
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -20,10 +20,10 @@
20
20
  #
21
21
 
22
22
  require "chef/knife/cloud/server/create_command"
23
- require "chef/knife/openstack_helpers"
24
- require "chef/knife/cloud/openstack_server_create_options"
25
- require "chef/knife/cloud/openstack_service"
26
- require "chef/knife/cloud/openstack_service_options"
23
+ require_relative "openstack_helpers"
24
+ require_relative "cloud/openstack_server_create_options"
25
+ require_relative "cloud/openstack_service"
26
+ require_relative "cloud/openstack_service_options"
27
27
  require "chef/knife/cloud/exceptions"
28
28
 
29
29
  class Chef
@@ -43,19 +43,19 @@ class Chef
43
43
  server_def: {
44
44
  # servers require a name, knife-cloud generates the chef_node_name
45
45
  :name => config[:chef_node_name],
46
- :image_ref => service.get_image(locate_config_value(:image)).id,
47
- :flavor_ref => service.get_flavor(locate_config_value(:flavor)).id,
48
- :security_groups => locate_config_value(:openstack_security_groups),
49
- :availability_zone => locate_config_value(:availability_zone),
50
- "os:scheduler_hints" => locate_config_value(:openstack_scheduler_hints),
51
- :metadata => locate_config_value(:metadata),
52
- :key_name => locate_config_value(:openstack_ssh_key_id),
46
+ :image_ref => service.get_image(config[:image]).id,
47
+ :flavor_ref => service.get_flavor(config[:flavor]).id,
48
+ :security_groups => config[:openstack_security_groups],
49
+ :availability_zone => config[:availability_zone],
50
+ "os:scheduler_hints" => config[:openstack_scheduler_hints],
51
+ :metadata => config[:metadata],
52
+ :key_name => config[:openstack_ssh_key_id],
53
53
  },
54
- server_create_timeout: locate_config_value(:server_create_timeout),
54
+ server_create_timeout: config[:server_create_timeout],
55
55
  }
56
- unless locate_config_value(:openstack_volumes).nil?
56
+ unless config[:openstack_volumes].nil?
57
57
  counter = 99
58
- @create_options[:server_def][:block_device_mapping] = locate_config_value(:openstack_volumes).map do |vol|
58
+ @create_options[:server_def][:block_device_mapping] = config[:openstack_volumes].map do |vol|
59
59
  counter += 1
60
60
  {
61
61
  volume_id: vol,
@@ -66,8 +66,8 @@ class Chef
66
66
  end
67
67
  end
68
68
 
69
- @create_options[:server_def][:user_data] = locate_config_value(:user_data) if locate_config_value(:user_data)
70
- @create_options[:server_def][:nics] = locate_config_value(:network_ids).map { |nic| nic_id = { "net_id" => nic } } if locate_config_value(:network_ids)
69
+ @create_options[:server_def][:user_data] = config[:user_data] if config[:user_data]
70
+ @create_options[:server_def][:nics] = config[:network_ids].map { |nic| nic_id = { "net_id" => nic } } if config[:network_ids]
71
71
 
72
72
  Chef::Log.debug("Create server params - server_def = #{@create_options[:server_def]}")
73
73
  # set columns_with_info map
@@ -94,7 +94,7 @@ class Chef
94
94
  msg_pair("Public IP Address", primary_public_ip_address(server.addresses)) if primary_public_ip_address(server.addresses)
95
95
  msg_pair("Private IP Address", primary_private_ip_address(server.addresses)) if primary_private_ip_address(server.addresses)
96
96
 
97
- floating_address = locate_config_value(:openstack_floating_ip)
97
+ floating_address = config[:openstack_floating_ip]
98
98
  bind_ip = primary_network_ip_address(server.addresses, server.addresses.keys[0])
99
99
  Chef::Log.debug("Floating IP Address requested #{floating_address}")
100
100
  unless floating_address == "-1" # no floating IP requested
@@ -140,10 +140,10 @@ class Chef
140
140
  super
141
141
 
142
142
  # Use SSH password either specified from command line or from openstack server instance
143
- config[:ssh_password] = locate_config_value(:ssh_password) || server.password unless config[:openstack_ssh_key_id]
143
+ config[:ssh_password] = config[:ssh_password] || server.password unless config[:openstack_ssh_key_id]
144
144
 
145
- # The bootstrap network is always initialised to 'public' when a network name isn't specified. Therefore,
146
- # only set the bootstrap network to 'private' if still initialised to public and nothing was specified for
145
+ # The bootstrap network is always initialized to 'public' when a network name isn't specified. Therefore,
146
+ # only set the bootstrap network to 'private' if still initialized to public and nothing was specified for
147
147
  # the private network name.
148
148
  config[:bootstrap_network] = "private" if config[:private_network] && config[:bootstrap_network] == "public"
149
149
 
@@ -172,51 +172,52 @@ class Chef
172
172
 
173
173
  def validate_params!
174
174
  # set param vm_name to a random value if the name is not set by the user (plugin)
175
- config[:chef_node_name] = get_node_name(locate_config_value(:chef_node_name), locate_config_value(:chef_node_name_prefix))
175
+ config[:chef_node_name] = get_node_name(config[:chef_node_name], config[:chef_node_name_prefix])
176
176
 
177
177
  errors = []
178
178
 
179
- if locate_config_value(:bootstrap_protocol) == "winrm"
180
- if locate_config_value(:winrm_password).nil?
181
- errors << "You must provide Winrm Password."
179
+ if config[:connection_protocol] == "winrm"
180
+ if config[:connection_password].nil?
181
+ errors << "You must provide Connection Password."
182
182
  end
183
- elsif locate_config_value(:bootstrap_protocol) != "ssh"
183
+ elsif config[:connection_protocol] != "ssh"
184
184
  errors << "You must provide a valid bootstrap protocol. options [ssh/winrm]. For linux type images, options [ssh]"
185
185
  end
186
186
 
187
- errors << "You must provide --image-os-type option [windows/linux]" unless %w{windows linux}.include?(locate_config_value(:image_os_type))
187
+ errors << "You must provide --image-os-type option [windows/linux]" unless %w{windows linux}.include?(config[:image_os_type])
188
188
  error_message = ""
189
189
  raise CloudExceptions::ValidationError, error_message if errors.each { |e| ui.error(e); error_message = "#{error_message} #{e}." }.any?
190
190
  end
191
191
 
192
192
  def is_image_valid?
193
- service.get_image(locate_config_value(:image)).nil? ? false : true
193
+ service.get_image(config[:image]).nil? ? false : true
194
194
  end
195
195
 
196
196
  def is_flavor_valid?
197
- service.get_flavor(locate_config_value(:flavor)).nil? ? false : true
197
+ service.get_flavor(config[:flavor]).nil? ? false : true
198
198
  end
199
199
 
200
200
  def is_floating_ip_valid?
201
- address = locate_config_value(:openstack_floating_ip)
201
+ address = config[:openstack_floating_ip]
202
202
 
203
203
  return true if address == "-1" # no floating IP requested
204
204
 
205
205
  addresses = service.connection.addresses
206
206
  return false if addresses.empty? # no floating IPs
207
+
207
208
  # floating requested without value
208
209
  if address.nil?
209
210
  if addresses.find_index { |a| a.fixed_ip.nil? }
210
- return true
211
+ true
211
212
  else
212
- return false # no floating IPs available
213
+ false # no floating IPs available
213
214
  end
214
215
  else
215
216
  # floating requested with value
216
217
  if addresses.find_index { |a| a.ip == address }
217
- return true
218
+ true
218
219
  else
219
- return false # requested floating IP does not exist
220
+ false # requested floating IP does not exist
220
221
  end
221
222
  end
222
223
  end
@@ -1,15 +1,27 @@
1
- # frozen_string_literal: true
2
1
  #
3
2
  # Author:: Siddheshwar More (<siddheshwar.more@clogeny.com>)
4
3
  # Author:: Kaustubh Deorukhkar (<kaustubh@clogeny.com>)
5
- # Copyright:: Copyright (c) 2013 Chef Software, Inc.
4
+ # Copyright:: Copyright 2013-2020 Chef Software, Inc.
5
+ # License:: Apache License, Version 2.0
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
6
18
  #
7
19
 
8
20
  require "chef/knife/cloud/server/delete_options"
9
21
  require "chef/knife/cloud/server/delete_command"
10
- require "chef/knife/cloud/openstack_service"
11
- require "chef/knife/cloud/openstack_service_options"
12
- require "chef/knife/openstack_helpers"
22
+ require_relative "cloud/openstack_service"
23
+ require_relative "cloud/openstack_service_options"
24
+ require_relative "openstack_helpers"
13
25
 
14
26
  class Chef
15
27
  class Knife