fog 1.27.0 → 1.28.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (142) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +71 -0
  3. data/Rakefile +2 -2
  4. data/bin/fog +2 -2
  5. data/fog.gemspec +4 -3
  6. data/lib/fog/bin/clodo.rb +1 -1
  7. data/lib/fog/bin/openstack.rb +5 -0
  8. data/lib/fog/digitalocean/examples/getting_started.md +46 -4
  9. data/lib/fog/digitalocean/models/compute/server.rb +1 -3
  10. data/lib/fog/digitalocean/models/compute/servers.rb +30 -0
  11. data/lib/fog/fogdocker/compute.rb +3 -2
  12. data/lib/fog/fogdocker/requests/compute/container_action.rb +1 -1
  13. data/lib/fog/fogdocker/requests/compute/container_all.rb +1 -1
  14. data/lib/fog/fogdocker/requests/compute/container_commit.rb +1 -1
  15. data/lib/fog/fogdocker/requests/compute/container_create.rb +1 -1
  16. data/lib/fog/fogdocker/requests/compute/container_delete.rb +1 -1
  17. data/lib/fog/fogdocker/requests/compute/container_get.rb +1 -1
  18. data/lib/fog/fogdocker/requests/compute/image_all.rb +1 -1
  19. data/lib/fog/fogdocker/requests/compute/image_create.rb +1 -1
  20. data/lib/fog/fogdocker/requests/compute/image_delete.rb +1 -1
  21. data/lib/fog/fogdocker/requests/compute/image_get.rb +1 -1
  22. data/lib/fog/fogdocker/requests/compute/image_search.rb +1 -1
  23. data/lib/fog/google/compute.rb +2 -1
  24. data/lib/fog/google/core.rb +42 -12
  25. data/lib/fog/google/dns.rb +2 -1
  26. data/lib/fog/google/monitoring.rb +1 -1
  27. data/lib/fog/google/sql.rb +1 -1
  28. data/lib/fog/hp/requests/storage/get_object.rb +5 -3
  29. data/lib/fog/joyent/compute.rb +2 -0
  30. data/lib/fog/openstack.rb +1 -0
  31. data/lib/fog/openstack/baremetal.rb +370 -0
  32. data/lib/fog/openstack/core.rb +1 -0
  33. data/lib/fog/openstack/docs/orchestration.md +318 -0
  34. data/lib/fog/openstack/docs/storage.md +1 -7
  35. data/lib/fog/openstack/models/baremetal/chassis.rb +60 -0
  36. data/lib/fog/openstack/models/baremetal/chassis_collection.rb +38 -0
  37. data/lib/fog/openstack/models/baremetal/driver.rb +30 -0
  38. data/lib/fog/openstack/models/baremetal/drivers.rb +21 -0
  39. data/lib/fog/openstack/models/baremetal/node.rb +85 -0
  40. data/lib/fog/openstack/models/baremetal/nodes.rb +38 -0
  41. data/lib/fog/openstack/models/baremetal/port.rb +61 -0
  42. data/lib/fog/openstack/models/baremetal/ports.rb +38 -0
  43. data/lib/fog/openstack/models/orchestration/event.rb +20 -0
  44. data/lib/fog/openstack/models/orchestration/events.rb +28 -0
  45. data/lib/fog/openstack/models/orchestration/resource.rb +32 -0
  46. data/lib/fog/openstack/models/orchestration/resource_schemas.rb +17 -0
  47. data/lib/fog/openstack/models/orchestration/resources.rb +35 -0
  48. data/lib/fog/openstack/models/orchestration/stack.rb +91 -24
  49. data/lib/fog/openstack/models/orchestration/stacks.rb +38 -4
  50. data/lib/fog/openstack/models/orchestration/template.rb +15 -0
  51. data/lib/fog/openstack/models/orchestration/templates.rb +44 -0
  52. data/lib/fog/openstack/orchestration.rb +48 -2
  53. data/lib/fog/openstack/requests/baremetal/create_chassis.rb +44 -0
  54. data/lib/fog/openstack/requests/baremetal/create_node.rb +54 -0
  55. data/lib/fog/openstack/requests/baremetal/create_port.rb +46 -0
  56. data/lib/fog/openstack/requests/baremetal/delete_chassis.rb +25 -0
  57. data/lib/fog/openstack/requests/baremetal/delete_node.rb +25 -0
  58. data/lib/fog/openstack/requests/baremetal/delete_port.rb +25 -0
  59. data/lib/fog/openstack/requests/baremetal/get_chassis.rb +24 -0
  60. data/lib/fog/openstack/requests/baremetal/get_driver.rb +24 -0
  61. data/lib/fog/openstack/requests/baremetal/get_driver_properties.rb +40 -0
  62. data/lib/fog/openstack/requests/baremetal/get_node.rb +24 -0
  63. data/lib/fog/openstack/requests/baremetal/get_port.rb +24 -0
  64. data/lib/fog/openstack/requests/baremetal/list_chassis.rb +48 -0
  65. data/lib/fog/openstack/requests/baremetal/list_chassis_detailed.rb +31 -0
  66. data/lib/fog/openstack/requests/baremetal/list_drivers.rb +24 -0
  67. data/lib/fog/openstack/requests/baremetal/list_nodes.rb +40 -0
  68. data/lib/fog/openstack/requests/baremetal/list_nodes_detailed.rb +31 -0
  69. data/lib/fog/openstack/requests/baremetal/list_ports.rb +48 -0
  70. data/lib/fog/openstack/requests/baremetal/list_ports_detailed.rb +31 -0
  71. data/lib/fog/openstack/requests/baremetal/patch_chassis.rb +42 -0
  72. data/lib/fog/openstack/requests/baremetal/patch_node.rb +41 -0
  73. data/lib/fog/openstack/requests/baremetal/patch_port.rb +41 -0
  74. data/lib/fog/openstack/requests/compute/create_server.rb +1 -0
  75. data/lib/fog/openstack/requests/orchestration/abandon_stack.rb +15 -0
  76. data/lib/fog/openstack/requests/orchestration/build_info.rb +15 -0
  77. data/lib/fog/openstack/requests/orchestration/create_stack.rb +31 -12
  78. data/lib/fog/openstack/requests/orchestration/delete_stack.rb +28 -5
  79. data/lib/fog/openstack/requests/orchestration/get_stack_template.rb +20 -0
  80. data/lib/fog/openstack/requests/orchestration/list_resource_events.rb +23 -0
  81. data/lib/fog/openstack/requests/orchestration/list_resource_types.rb +26 -0
  82. data/lib/fog/openstack/requests/orchestration/list_resources.rb +23 -0
  83. data/lib/fog/openstack/requests/orchestration/list_stack_data.rb +27 -0
  84. data/lib/fog/openstack/requests/orchestration/list_stack_events.rb +23 -0
  85. data/lib/fog/openstack/requests/orchestration/preview_stack.rb +16 -0
  86. data/lib/fog/openstack/requests/orchestration/show_event_details.rb +26 -0
  87. data/lib/fog/openstack/requests/orchestration/show_resource_data.rb +26 -0
  88. data/lib/fog/openstack/requests/orchestration/show_resource_metadata.rb +26 -0
  89. data/lib/fog/openstack/requests/orchestration/show_resource_schema.rb +15 -0
  90. data/lib/fog/openstack/requests/orchestration/show_resource_template.rb +20 -0
  91. data/lib/fog/openstack/requests/orchestration/show_stack_details.rb +26 -0
  92. data/lib/fog/openstack/requests/orchestration/update_stack.rb +34 -7
  93. data/lib/fog/openstack/requests/orchestration/validate_template.rb +16 -0
  94. data/lib/fog/openstack/volume.rb +0 -1
  95. data/lib/fog/ovirt/compute.rb +6 -0
  96. data/lib/fog/ovirt/models/compute/server.rb +10 -0
  97. data/lib/fog/ovirt/models/compute/template.rb +1 -0
  98. data/lib/fog/ovirt/models/compute/volumes.rb +1 -2
  99. data/lib/fog/ovirt/requests/compute/attach_volume.rb +22 -0
  100. data/lib/fog/ovirt/requests/compute/detach_volume.rb +22 -0
  101. data/lib/fog/ovirt/requests/compute/list_volumes.rb +19 -0
  102. data/lib/fog/ovirt/requests/compute/mock_files/disks.xml +58 -0
  103. data/lib/fog/vcloud_director/models/compute/task.rb +2 -2
  104. data/lib/fog/version.rb +1 -1
  105. data/lib/fog/vsphere/compute.rb +3 -0
  106. data/lib/fog/vsphere/requests/compute/cloudinit_to_customspec.rb +20 -11
  107. data/lib/fog/vsphere/requests/compute/get_compute_resource.rb +41 -0
  108. data/lib/fog/vsphere/requests/compute/get_network.rb +35 -6
  109. data/lib/fog/vsphere/requests/compute/get_resource_pool.rb +1 -1
  110. data/lib/fog/vsphere/requests/compute/get_virtual_machine.rb +19 -13
  111. data/lib/fog/vsphere/requests/compute/list_compute_resources.rb +92 -0
  112. data/lib/fog/vsphere/requests/compute/list_virtual_machines.rb +16 -11
  113. data/lib/fog/vsphere/requests/compute/vm_clone.rb +6 -5
  114. data/lib/fog/xenserver/requests/compute/create_sr.rb +3 -4
  115. data/lib/tasks/changelog_task.rb +1 -0
  116. data/tests/helper.rb +3 -3
  117. data/tests/helpers/mock_helper.rb +0 -4
  118. data/tests/openstack/requests/baremetal/chassis_tests.rb +48 -0
  119. data/tests/openstack/requests/baremetal/driver_tests.rb +40 -0
  120. data/tests/openstack/requests/baremetal/node_tests.rb +65 -0
  121. data/tests/openstack/requests/baremetal/port_tests.rb +56 -0
  122. data/tests/openstack/requests/compute/server_tests.rb +2 -0
  123. data/tests/openstack/requests/orchestration/stack_tests.rb +2 -2
  124. data/tests/vsphere/requests/compute/get_network_tests.rb +48 -0
  125. metadata +88 -23
  126. data/lib/fog/aws.rb +0 -23
  127. data/lib/fog/bin/riakcs.rb +0 -25
  128. data/lib/fog/openstack/requests/orchestration/list_stacks.rb +0 -47
  129. data/lib/fog/riakcs.rb +0 -2
  130. data/lib/fog/riakcs/core.rb +0 -121
  131. data/lib/fog/riakcs/provisioning.rb +0 -98
  132. data/lib/fog/riakcs/requests/provisioning/create_user.rb +0 -77
  133. data/lib/fog/riakcs/requests/provisioning/disable_user.rb +0 -23
  134. data/lib/fog/riakcs/requests/provisioning/enable_user.rb +0 -23
  135. data/lib/fog/riakcs/requests/provisioning/get_user.rb +0 -41
  136. data/lib/fog/riakcs/requests/provisioning/list_users.rb +0 -43
  137. data/lib/fog/riakcs/requests/provisioning/regrant_secret.rb +0 -23
  138. data/lib/fog/riakcs/requests/provisioning/update_user.rb +0 -23
  139. data/lib/fog/riakcs/requests/usage/get_usage.rb +0 -68
  140. data/lib/fog/riakcs/usage.rb +0 -62
  141. data/tests/riakcs/requests/provisioning/provisioning_tests.rb +0 -174
  142. data/tests/riakcs/requests/usage/usage_tests.rb +0 -29
@@ -0,0 +1,31 @@
1
+ module Fog
2
+ module Baremetal
3
+ class OpenStack
4
+ class Real
5
+ def list_nodes_detailed(parameters=nil)
6
+ if parameters
7
+ query = parameters.each { |k, v| parameters[k] = URI::encode(v) }
8
+ else
9
+ query = {}
10
+ end
11
+
12
+ request(
13
+ :expects => [200, 204],
14
+ :method => 'GET',
15
+ :path => 'nodes/detail',
16
+ :query => query
17
+ )
18
+ end
19
+ end # class Real
20
+
21
+ class Mock
22
+ def list_nodes_detailed(parameters=nil)
23
+ response = Excon::Response.new
24
+ response.status = [200, 204][rand(1)]
25
+ response.body = { "nodes" => self.data[:nodes] }
26
+ response
27
+ end # def list_nodes
28
+ end # class Mock
29
+ end # class OpenStack
30
+ end # module Baremetal
31
+ end # module Fog
@@ -0,0 +1,48 @@
1
+ module Fog
2
+ module Baremetal
3
+ class OpenStack
4
+ class Real
5
+ def list_ports(parameters=nil)
6
+ if parameters
7
+ query = parameters.each { |k, v| parameters[k] = URI::encode(v) }
8
+ else
9
+ query = {}
10
+ end
11
+
12
+ request(
13
+ :expects => [200, 204],
14
+ :method => 'GET',
15
+ :path => 'ports',
16
+ :query => query
17
+ )
18
+ end
19
+ end # class Real
20
+
21
+ class Mock
22
+ def list_ports(parameters=nil)
23
+ response = Excon::Response.new
24
+ response.status = [200, 204][rand(1)]
25
+ response.body = {
26
+ "ports" => [
27
+ {
28
+ "address" => "fe:54:00:77:07:d9",
29
+ "links" => [
30
+ {
31
+ "href" => "http://localhost:6385/v1/ports/27e3153e-d5bf-4b7e-b517-fb518e17f34c",
32
+ "rel" => "self"
33
+ },
34
+ {
35
+ "href" => "http://localhost:6385/ports/27e3153e-d5bf-4b7e-b517-fb518e17f34c",
36
+ "rel" => "bookmark"
37
+ }
38
+ ],
39
+ "uuid" => Fog::UUID.uuid
40
+ }
41
+ ]
42
+ }
43
+ response
44
+ end # def list_ports
45
+ end # class Mock
46
+ end # class OpenStack
47
+ end # module Baremetal
48
+ end # module Fog
@@ -0,0 +1,31 @@
1
+ module Fog
2
+ module Baremetal
3
+ class OpenStack
4
+ class Real
5
+ def list_ports_detailed(parameters=nil)
6
+ if parameters
7
+ query = parameters.each { |k, v| parameters[k] = URI::encode(v) }
8
+ else
9
+ query = {}
10
+ end
11
+
12
+ request(
13
+ :expects => [200, 204],
14
+ :method => 'GET',
15
+ :path => 'ports/detail',
16
+ :query => query
17
+ )
18
+ end
19
+ end # class Real
20
+
21
+ class Mock
22
+ def list_ports_detailed(parameters=nil)
23
+ response = Excon::Response.new
24
+ response.status = [200, 204][rand(1)]
25
+ response.body = { "ports" => self.data[:ports] }
26
+ response
27
+ end # def list_ports
28
+ end # class Mock
29
+ end # class OpenStack
30
+ end # module Baremetal
31
+ end # module Fog
@@ -0,0 +1,42 @@
1
+ module Fog
2
+ module Baremetal
3
+ class OpenStack
4
+ class Real
5
+ # Patch a chassis
6
+ #
7
+ # parameter example:
8
+ # [{:op=> 'replace', :path => "/extra/placement", :value => "somewhere"}]
9
+ #
10
+ # === Patch parameter, list of jsonpatch ===
11
+ # op = Operations: 'add', 'replace' or 'remove'
12
+ # path = Attributes to add/replace or remove (only PATH is necessary on remove),
13
+ # e.g. /extra/placement
14
+ # value = Value to set
15
+ def patch_chassis(chassis_uuid, patch)
16
+ request(
17
+ :body => Fog::JSON.encode(patch),
18
+ :expects => 200,
19
+ :method => 'PATCH',
20
+ :path => "chassis/#{chassis_uuid}"
21
+ )
22
+ end
23
+ end
24
+
25
+ class Mock
26
+ def patch_chassis(chassis_uuid, patch)
27
+ response = Excon::Response.new
28
+ response.status = 200
29
+ response.headers = {
30
+ "X-Compute-Request-Id" => "req-fdc6f99e-55a2-4ab1-8904-0892753828cf",
31
+ "Content-Type" => "application/json",
32
+ "Content-Length" => "356",
33
+ "Date" => Date.new
34
+ }
35
+ response.body = self.data[:chassis_collection].first
36
+ response
37
+ end
38
+ end # mock
39
+ end # openstack
40
+ end # baremetal
41
+ end # fog
42
+
@@ -0,0 +1,41 @@
1
+ module Fog
2
+ module Baremetal
3
+ class OpenStack
4
+ class Real
5
+ # Patch a node
6
+ #
7
+ # parameter example:
8
+ # [{:op=> 'replace', :path => "/driver", :value => "pxe_ssh"}]
9
+ #
10
+ # === Patch parameter, list of jsonpatch ===
11
+ # op = Operations: 'add', 'replace' or 'remove'
12
+ # path = Attributes to add/replace or remove (only PATH is necessary on remove),
13
+ # e.g. /driver_info/ipmi_address
14
+ # value = Value to set
15
+ def patch_node(node_uuid, patch)
16
+ request(
17
+ :body => Fog::JSON.encode(patch),
18
+ :expects => 200,
19
+ :method => 'PATCH',
20
+ :path => "nodes/#{node_uuid}"
21
+ )
22
+ end
23
+ end
24
+
25
+ class Mock
26
+ def patch_node(node_uuid, patch)
27
+ response = Excon::Response.new
28
+ response.status = 200
29
+ response.headers = {
30
+ "X-Compute-Request-Id" => "req-fdc6f99e-55a2-4ab1-8904-0892753828cf",
31
+ "Content-Type" => "application/json",
32
+ "Content-Length" => "356",
33
+ "Date" => Date.new
34
+ }
35
+ response.body = self.data[:nodes].first
36
+ response
37
+ end
38
+ end # mock
39
+ end # openstack
40
+ end # baremetal
41
+ end # fog
@@ -0,0 +1,41 @@
1
+ module Fog
2
+ module Baremetal
3
+ class OpenStack
4
+ class Real
5
+ # Patch a port
6
+ #
7
+ # parameter example:
8
+ # [{:op=> 'replace', :path => "/driver_info/ipmi_address", :value => "192.0.2.1"}]
9
+ #
10
+ # === Patch parameter, list of jsonpatch ===
11
+ # op = Operations: 'add', 'replace' or 'remove'
12
+ # path = Attributes to add/replace or remove (only PATH is necessary on remove),
13
+ # e.g. /driver_info/ipmi_address
14
+ # value = Value to set
15
+ def patch_port(port_uuid, patch)
16
+ request(
17
+ :body => Fog::JSON.encode(patch),
18
+ :expects => 200,
19
+ :method => 'PATCH',
20
+ :path => "ports/#{port_uuid}"
21
+ )
22
+ end
23
+ end
24
+
25
+ class Mock
26
+ def patch_port(port_uuid, patch)
27
+ response = Excon::Response.new
28
+ response.status = 200
29
+ response.headers = {
30
+ "X-Compute-Request-Id" => "req-fdc6f99e-55a2-4ab1-8904-0892753828cf",
31
+ "Content-Type" => "application/json",
32
+ "Content-Length" => "356",
33
+ "Date" => Date.new
34
+ }
35
+ response.body = self.data[:ports].first
36
+ response
37
+ end
38
+ end # mock
39
+ end # openstack
40
+ end # baremetal
41
+ end # fog
@@ -66,6 +66,7 @@ module Fog
66
66
  'device_name' => mapping[:device_name],
67
67
  'source_type' => mapping[:source_type],
68
68
  'uuid' => mapping[:uuid],
69
+ 'volume_size' => mapping[:volume_size],
69
70
  }
70
71
  end
71
72
  elsif (block_device_mapping = options['block_device_mapping'])
@@ -0,0 +1,15 @@
1
+ module Fog
2
+ module Orchestration
3
+ class OpenStack
4
+ class Real
5
+ def abandon_stack(stack)
6
+ request(
7
+ :expects => [200],
8
+ :method => 'DELETE',
9
+ :path => "stacks/#{stack.stack_name}/#{stack.id}/abandon"
10
+ )
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module Fog
2
+ module Orchestration
3
+ class OpenStack
4
+ class Real
5
+ def build_info
6
+ request(
7
+ :expects => [200],
8
+ :method => 'GET',
9
+ :path => 'build_info'
10
+ )
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -4,37 +4,56 @@ module Fog
4
4
  class Real
5
5
  # Create a stack.
6
6
  #
7
- # * stack_name [String] Name of the stack to create.
7
+ #
8
8
  # * options [Hash]:
9
- # * :template_body [String] Structure containing the template body.
9
+ # * :stack_name [String] Name of the stack to create.
10
+ # * :template [String] Structure containing the template body.
10
11
  # or (one of the two Template parameters is required)
11
12
  # * :template_url [String] URL of file containing the template body.
12
13
  # * :disable_rollback [Boolean] Controls rollback on stack creation failure, defaults to false.
13
14
  # * :parameters [Hash] Hash of providers to supply to template
14
- # * :timeout_in_minutes [Integer] Minutes to wait before status is set to CREATE_FAILED
15
+ # * :timeout_mins [Integer] Minutes to wait before status is set to CREATE_FAILED
15
16
  #
16
- # @see http://docs.amazonwebservices.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html
17
+ # @see http://developer.openstack.org/api-ref-orchestration-v1.html
17
18
 
18
- def create_stack(stack_name, options = {})
19
- params = {
20
- :stack_name => stack_name
21
- }.merge(options)
19
+ def create_stack(arg1, arg2 = nil)
20
+ if arg1.is_a?(Hash)
21
+ # Normal use: create_stack(options)
22
+ options = arg1
23
+ else
24
+ # Deprecated: create_stack(stack_name, options = {})
25
+ Fog::Logger.deprecation("#create_stack(stack_name, options) is deprecated, use #create_stack(options) instead [light_black](#{caller.first})[/]")
26
+ options = {
27
+ :stack_name => arg1
28
+ }.merge(arg2.nil? ? {} : arg2)
29
+ end
22
30
 
23
31
  request(
24
32
  :expects => 201,
25
33
  :path => 'stacks',
26
34
  :method => 'POST',
27
- :body => Fog::JSON.encode(params)
35
+ :body => Fog::JSON.encode(options)
28
36
  )
29
37
  end
30
38
  end
31
39
 
32
40
  class Mock
33
- def create_stack(stack_name, options = {})
41
+ def create_stack(arg1, arg2 = nil)
42
+ if arg1.is_a?(Hash)
43
+ # Normal use: create_stack(options)
44
+ options = arg1
45
+ else
46
+ # Deprecated: create_stack(stack_name, options = {})
47
+ Fog::Logger.deprecation("#create_stack(stack_name, options) is deprecated, use #create_stack(options) instead [light_black](#{caller.first})[/]")
48
+ options = {
49
+ :stack_name => arg1
50
+ }.merge(arg2.nil? ? {} : arg2)
51
+ end
52
+
34
53
  stack_id = Fog::Mock.random_hex(32)
35
54
  stack = self.data[:stacks][stack_id] = {
36
55
  'id' => stack_id,
37
- 'stack_name' => stack_name,
56
+ 'stack_name' => options[:stack_name],
38
57
  'links' => [],
39
58
  'description' => options[:description],
40
59
  'stack_status' => 'CREATE_COMPLETE',
@@ -47,7 +66,7 @@ module Fog
47
66
  response.status = 201
48
67
  response.body = {
49
68
  'id' => stack_id,
50
- 'links'=>[{"href"=>"http://localhost:8004/v1/fake_tenant_id/stacks/#{stack_name}/#{stack_id}", "rel"=>"self"}]}
69
+ 'links'=>[{"href"=>"http://localhost:8004/v1/fake_tenant_id/stacks/#{options[:stack_name]}/#{stack_id}", "rel"=>"self"}]}
51
70
  response
52
71
  end
53
72
  end
@@ -4,14 +4,25 @@ module Fog
4
4
  class Real
5
5
  # Delete a stack.
6
6
  #
7
- # @param stack_name [String] Name of the stack to delete.
8
- # @param stack_id [String] ID of the stack to delete.
7
+ # @param [Stack] Stack to be deleted
9
8
  #
10
9
  # @return [Excon::Response]
11
10
  #
12
- # @see http://docs.amazonwebservices.com/AWSCloudFormation/latest/APIReference/API_DeleteStack.html
11
+ # @see http://developer.openstack.org/api-ref-orchestration-v1.html
12
+
13
+ def delete_stack(arg1, arg2 = nil)
14
+ if arg1.is_a?(Stack)
15
+ # Normal use: delete_stack(stack)
16
+ stack = arg1
17
+ stack_name = stack.stack_name
18
+ stack_id = stack.id
19
+ else
20
+ # Deprecated: delete_stack(stack_name, stack_id)
21
+ Fog::Logger.deprecation("#delete_stack(stack_name, stack_id) is deprecated, use #delete_stack(stack) instead [light_black](#{caller.first})[/]")
22
+ stack_name = arg1
23
+ stack_id = arg2
24
+ end
13
25
 
14
- def delete_stack(stack_name, stack_id)
15
26
  request(
16
27
  :expects => 204,
17
28
  :path => "stacks/#{stack_name}/#{stack_id}",
@@ -21,7 +32,19 @@ module Fog
21
32
  end
22
33
 
23
34
  class Mock
24
- def delete_stack(stack_name, stack_id)
35
+ def delete_stack(arg1, arg2 = nil)
36
+ if arg1.is_a?(Stack)
37
+ # Normal use: delete_stack(stack)
38
+ stack = arg1
39
+ stack_name = stack.stack_name
40
+ stack_id = stack.id
41
+ else
42
+ # Deprecated: delete_stack(stack_name, stack_id)
43
+ Fog::Logger.deprecation("#delete_stack(stack_name, stack_id) is deprecated, use #delete_stack(stack) instead [light_black](#{caller.first})[/]")
44
+ stack_name = arg1
45
+ stack_id = arg2
46
+ end
47
+
25
48
  self.data[:stacks].delete(stack_id)
26
49
 
27
50
  response = Excon::Response.new
@@ -0,0 +1,20 @@
1
+ module Fog
2
+ module Orchestration
3
+ class OpenStack
4
+ class Real
5
+ def get_stack_template(stack)
6
+ request(
7
+ :method => 'GET',
8
+ :path => "stacks/#{stack.stack_name}/#{stack.id}/template",
9
+ :expects => 200
10
+ )
11
+ end
12
+ end
13
+
14
+ class Mock
15
+ def get_stack_template(stack)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,23 @@
1
+ module Fog
2
+ module Orchestration
3
+ class OpenStack
4
+ class Real
5
+ def list_resource_events(stack, resource, options={})
6
+ uri = "stacks/#{stack.stack_name}/#{stack.id}/resources/#{resource.resource_name}/events"
7
+ request(:method => 'GET', :path => uri, :expects => 200, :query => options)
8
+ end
9
+ end
10
+
11
+ class Mock
12
+ def list_stack_events
13
+ events = self.data[:events].values
14
+
15
+ Excon::Response.new(
16
+ :body => { 'events' => events },
17
+ :status => 200
18
+ )
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end