fog 1.32.0 → 1.33.0

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 (204) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +59 -0
  3. data/Gemfile +1 -0
  4. data/Rakefile +4 -4
  5. data/fog.gemspec +3 -2
  6. data/lib/fog/linode/requests/compute/avail_datacenters.rb +8 -7
  7. data/lib/fog/openstack.rb +1 -0
  8. data/lib/fog/openstack/compute.rb +7 -1
  9. data/lib/fog/openstack/core.rb +28 -54
  10. data/lib/fog/openstack/identity.rb +1 -0
  11. data/lib/fog/openstack/identity_v3.rb +10 -9
  12. data/lib/fog/openstack/models/baremetal/chassis.rb +3 -14
  13. data/lib/fog/openstack/models/baremetal/chassis_collection.rb +5 -5
  14. data/lib/fog/openstack/models/baremetal/driver.rb +2 -8
  15. data/lib/fog/openstack/models/baremetal/drivers.rb +3 -5
  16. data/lib/fog/openstack/models/baremetal/node.rb +3 -14
  17. data/lib/fog/openstack/models/baremetal/nodes.rb +4 -4
  18. data/lib/fog/openstack/models/baremetal/port.rb +3 -14
  19. data/lib/fog/openstack/models/baremetal/ports.rb +4 -4
  20. data/lib/fog/openstack/models/collection.rb +45 -0
  21. data/lib/fog/openstack/models/compute/address.rb +2 -2
  22. data/lib/fog/openstack/models/compute/addresses.rb +3 -5
  23. data/lib/fog/openstack/models/compute/aggregate.rb +2 -8
  24. data/lib/fog/openstack/models/compute/aggregates.rb +3 -5
  25. data/lib/fog/openstack/models/compute/availability_zone.rb +14 -0
  26. data/lib/fog/openstack/models/compute/availability_zones.rb +22 -0
  27. data/lib/fog/openstack/models/compute/flavor.rb +2 -8
  28. data/lib/fog/openstack/models/compute/flavors.rb +6 -6
  29. data/lib/fog/openstack/models/compute/host.rb +1 -1
  30. data/lib/fog/openstack/models/compute/hosts.rb +4 -6
  31. data/lib/fog/openstack/models/compute/image.rb +2 -8
  32. data/lib/fog/openstack/models/compute/images.rb +4 -6
  33. data/lib/fog/openstack/models/compute/key_pair.rb +2 -2
  34. data/lib/fog/openstack/models/compute/key_pairs.rb +3 -4
  35. data/lib/fog/openstack/models/compute/metadata.rb +3 -2
  36. data/lib/fog/openstack/models/compute/metadatum.rb +2 -2
  37. data/lib/fog/openstack/models/compute/network.rb +2 -2
  38. data/lib/fog/openstack/models/compute/networks.rb +3 -2
  39. data/lib/fog/openstack/models/compute/security_group.rb +2 -2
  40. data/lib/fog/openstack/models/compute/security_group_rule.rb +2 -2
  41. data/lib/fog/openstack/models/compute/security_group_rules.rb +2 -2
  42. data/lib/fog/openstack/models/compute/security_groups.rb +3 -5
  43. data/lib/fog/openstack/models/compute/server.rb +20 -1
  44. data/lib/fog/openstack/models/compute/servers.rb +9 -5
  45. data/lib/fog/openstack/models/compute/service.rb +2 -8
  46. data/lib/fog/openstack/models/compute/services.rb +4 -4
  47. data/lib/fog/openstack/models/compute/snapshot.rb +2 -8
  48. data/lib/fog/openstack/models/compute/snapshots.rb +5 -5
  49. data/lib/fog/openstack/models/compute/tenant.rb +2 -2
  50. data/lib/fog/openstack/models/compute/tenants.rb +3 -4
  51. data/lib/fog/openstack/models/compute/volume.rb +2 -8
  52. data/lib/fog/openstack/models/compute/volumes.rb +5 -5
  53. data/lib/fog/openstack/models/identity_v2/ec2_credential.rb +3 -9
  54. data/lib/fog/openstack/models/identity_v2/ec2_credentials.rb +3 -5
  55. data/lib/fog/openstack/models/identity_v2/role.rb +3 -3
  56. data/lib/fog/openstack/models/identity_v2/roles.rb +3 -5
  57. data/lib/fog/openstack/models/identity_v2/tenant.rb +5 -9
  58. data/lib/fog/openstack/models/identity_v2/tenants.rb +3 -5
  59. data/lib/fog/openstack/models/identity_v2/user.rb +2 -8
  60. data/lib/fog/openstack/models/identity_v2/users.rb +3 -5
  61. data/lib/fog/openstack/models/identity_v3/domain.rb +5 -9
  62. data/lib/fog/openstack/models/identity_v3/domains.rb +3 -5
  63. data/lib/fog/openstack/models/identity_v3/endpoint.rb +5 -9
  64. data/lib/fog/openstack/models/identity_v3/endpoints.rb +3 -5
  65. data/lib/fog/openstack/models/identity_v3/group.rb +5 -9
  66. data/lib/fog/openstack/models/identity_v3/groups.rb +3 -5
  67. data/lib/fog/openstack/models/identity_v3/os_credential.rb +3 -3
  68. data/lib/fog/openstack/models/identity_v3/os_credentials.rb +3 -5
  69. data/lib/fog/openstack/models/identity_v3/policies.rb +3 -5
  70. data/lib/fog/openstack/models/identity_v3/policy.rb +5 -9
  71. data/lib/fog/openstack/models/identity_v3/project.rb +5 -8
  72. data/lib/fog/openstack/models/identity_v3/projects.rb +21 -10
  73. data/lib/fog/openstack/models/identity_v3/role.rb +3 -8
  74. data/lib/fog/openstack/models/identity_v3/role_assignment.rb +3 -3
  75. data/lib/fog/openstack/models/identity_v3/role_assignments.rb +3 -5
  76. data/lib/fog/openstack/models/identity_v3/roles.rb +3 -5
  77. data/lib/fog/openstack/models/identity_v3/service.rb +3 -3
  78. data/lib/fog/openstack/models/identity_v3/services.rb +3 -5
  79. data/lib/fog/openstack/models/identity_v3/token.rb +3 -3
  80. data/lib/fog/openstack/models/identity_v3/tokens.rb +3 -3
  81. data/lib/fog/openstack/models/identity_v3/user.rb +3 -9
  82. data/lib/fog/openstack/models/identity_v3/users.rb +3 -5
  83. data/lib/fog/openstack/models/image/image.rb +2 -13
  84. data/lib/fog/openstack/models/image/images.rb +5 -5
  85. data/lib/fog/openstack/models/metering/resource.rb +2 -7
  86. data/lib/fog/openstack/models/metering/resources.rb +3 -3
  87. data/lib/fog/openstack/models/model.rb +44 -0
  88. data/lib/fog/openstack/models/network/floating_ip.rb +2 -7
  89. data/lib/fog/openstack/models/network/floating_ips.rb +3 -5
  90. data/lib/fog/openstack/models/network/lb_health_monitor.rb +2 -12
  91. data/lib/fog/openstack/models/network/lb_health_monitors.rb +3 -5
  92. data/lib/fog/openstack/models/network/lb_member.rb +2 -12
  93. data/lib/fog/openstack/models/network/lb_members.rb +3 -5
  94. data/lib/fog/openstack/models/network/lb_pool.rb +2 -12
  95. data/lib/fog/openstack/models/network/lb_pools.rb +3 -5
  96. data/lib/fog/openstack/models/network/lb_vip.rb +2 -12
  97. data/lib/fog/openstack/models/network/lb_vips.rb +3 -5
  98. data/lib/fog/openstack/models/network/network.rb +2 -12
  99. data/lib/fog/openstack/models/network/networks.rb +3 -5
  100. data/lib/fog/openstack/models/network/port.rb +2 -13
  101. data/lib/fog/openstack/models/network/ports.rb +3 -5
  102. data/lib/fog/openstack/models/network/router.rb +2 -13
  103. data/lib/fog/openstack/models/network/routers.rb +3 -5
  104. data/lib/fog/openstack/models/network/security_group.rb +2 -2
  105. data/lib/fog/openstack/models/network/security_group_rule.rb +2 -2
  106. data/lib/fog/openstack/models/network/security_group_rules.rb +3 -5
  107. data/lib/fog/openstack/models/network/security_groups.rb +3 -5
  108. data/lib/fog/openstack/models/network/subnet.rb +3 -14
  109. data/lib/fog/openstack/models/network/subnets.rb +3 -5
  110. data/lib/fog/openstack/models/orchestration/event.rb +2 -2
  111. data/lib/fog/openstack/models/orchestration/events.rb +5 -7
  112. data/lib/fog/openstack/models/orchestration/resource.rb +2 -2
  113. data/lib/fog/openstack/models/orchestration/resource_schemas.rb +2 -2
  114. data/lib/fog/openstack/models/orchestration/resources.rb +3 -5
  115. data/lib/fog/openstack/models/orchestration/stack.rb +3 -7
  116. data/lib/fog/openstack/models/orchestration/stacks.rb +5 -5
  117. data/lib/fog/openstack/models/orchestration/template.rb +2 -2
  118. data/lib/fog/openstack/models/orchestration/templates.rb +1 -1
  119. data/lib/fog/openstack/models/planning/plan.rb +2 -13
  120. data/lib/fog/openstack/models/planning/plans.rb +3 -5
  121. data/lib/fog/openstack/models/planning/role.rb +2 -8
  122. data/lib/fog/openstack/models/planning/roles.rb +3 -6
  123. data/lib/fog/openstack/models/storage/directories.rb +4 -6
  124. data/lib/fog/openstack/models/storage/directory.rb +2 -2
  125. data/lib/fog/openstack/models/storage/file.rb +15 -2
  126. data/lib/fog/openstack/models/storage/files.rb +7 -8
  127. data/lib/fog/openstack/models/volume/availability_zone.rb +13 -0
  128. data/lib/fog/openstack/models/volume/availability_zones.rb +17 -0
  129. data/lib/fog/openstack/models/volume/transfer.rb +36 -0
  130. data/lib/fog/openstack/models/volume/transfers.rb +38 -0
  131. data/lib/fog/openstack/models/volume/volume.rb +9 -8
  132. data/lib/fog/openstack/models/volume/volume_type.rb +2 -8
  133. data/lib/fog/openstack/models/volume/volume_types.rb +3 -6
  134. data/lib/fog/openstack/models/volume/volumes.rb +5 -6
  135. data/lib/fog/openstack/requests/compute/list_servers.rb +8 -5
  136. data/lib/fog/openstack/requests/compute/list_servers_detail.rb +9 -6
  137. data/lib/fog/openstack/requests/compute/list_zones.rb +6 -5
  138. data/lib/fog/openstack/requests/compute/list_zones_detailed.rb +55 -0
  139. data/lib/fog/openstack/requests/compute/shelve_offload_server.rb +24 -0
  140. data/lib/fog/openstack/requests/compute/shelve_server.rb +24 -0
  141. data/lib/fog/openstack/requests/compute/unshelve_server.rb +24 -0
  142. data/lib/fog/openstack/requests/identity_v3/get_project.rb +2 -2
  143. data/lib/fog/openstack/requests/network/create_subnet.rb +1 -1
  144. data/lib/fog/openstack/requests/network/update_subnet.rb +8 -7
  145. data/lib/fog/openstack/requests/volume/accept_transfer.rb +24 -0
  146. data/lib/fog/openstack/requests/volume/create_transfer.rb +27 -0
  147. data/lib/fog/openstack/requests/volume/delete_transfer.rb +17 -0
  148. data/lib/fog/openstack/requests/volume/extend_volume.rb +25 -0
  149. data/lib/fog/openstack/requests/volume/get_transfer_details.rb +17 -0
  150. data/lib/fog/openstack/requests/volume/list_transfers.rb +18 -0
  151. data/lib/fog/openstack/requests/volume/list_transfers_detailed.rb +18 -0
  152. data/lib/fog/openstack/requests/volume/list_zones.rb +32 -0
  153. data/lib/fog/openstack/storage.rb +3 -1
  154. data/lib/fog/openstack/volume.rb +16 -0
  155. data/lib/fog/rackspace/examples/compute_v2/create_network.rb +1 -1
  156. data/lib/fog/vcloud_director/generators/compute/edge_gateway_service_configuration.rb +31 -30
  157. data/lib/fog/vcloud_director/models/compute/task.rb +2 -2
  158. data/lib/fog/version.rb +1 -1
  159. data/lib/fog/vsphere/compute.rb +1 -0
  160. data/lib/fog/vsphere/requests/compute/get_resource_pool.rb +1 -1
  161. data/lib/fog/vsphere/requests/compute/get_virtual_machine.rb +4 -3
  162. data/lib/fog/vsphere/requests/compute/list_clusters.rb +1 -1
  163. data/lib/fog/vsphere/requests/compute/list_vm_interfaces.rb +2 -2
  164. data/lib/fog/vsphere/requests/compute/vm_clone.rb +101 -30
  165. data/lib/fog/vsphere/requests/compute/vm_execute.rb +47 -0
  166. data/lib/tasks/changelog_task.rb +1 -0
  167. data/spec/fog/openstack/identity_v3/{idv3.yml → common_setup.yml} +0 -0
  168. data/spec/fog/openstack/identity_v3/idv3_project_hier_crud_list.yml +1394 -0
  169. data/spec/fog/openstack/identity_v3_spec.rb +255 -196
  170. data/spec/fog/openstack/network/common_setup.yml +131 -0
  171. data/spec/fog/openstack/network/subnets_crud.yml +140 -0
  172. data/spec/fog/openstack/network_spec.rb +43 -0
  173. data/spec/fog/openstack/shared_context.rb +98 -0
  174. data/spec/fog/openstack/volume/{volume_common_setup.yml → common_setup.yml} +0 -0
  175. data/spec/fog/openstack/volume/volume_extend.yml +762 -0
  176. data/spec/fog/openstack/volume/volume_transfer_and_accept.yml +1078 -0
  177. data/spec/fog/openstack/volume/volume_transfer_and_delete.yml +695 -0
  178. data/spec/fog/openstack/volume_spec.rb +232 -67
  179. data/tests/openstack/models/storage/file_tests.rb +26 -0
  180. data/tests/openstack/requests/compute/availability_zone_tests.rb +18 -0
  181. data/tests/openstack/requests/compute/server_tests.rb +12 -0
  182. data/tests/openstack/requests/network/subnet_tests.rb +2 -2
  183. data/tests/openstack/requests/volume/availability_zone_tests.rb +13 -0
  184. data/tests/vcloud_director/requests/compute/edge_gateway_tests.rb +2 -2
  185. metadata +61 -26
  186. data/lib/fog/dynect.rb +0 -1
  187. data/lib/fog/dynect/core.rb +0 -26
  188. data/lib/fog/dynect/dns.rb +0 -157
  189. data/lib/fog/dynect/models/dns/record.rb +0 -67
  190. data/lib/fog/dynect/models/dns/records.rb +0 -48
  191. data/lib/fog/dynect/models/dns/zone.rb +0 -56
  192. data/lib/fog/dynect/models/dns/zones.rb +0 -25
  193. data/lib/fog/dynect/requests/dns/delete_record.rb +0 -55
  194. data/lib/fog/dynect/requests/dns/delete_zone.rb +0 -41
  195. data/lib/fog/dynect/requests/dns/get_all_records.rb +0 -56
  196. data/lib/fog/dynect/requests/dns/get_node_list.rb +0 -55
  197. data/lib/fog/dynect/requests/dns/get_record.rb +0 -83
  198. data/lib/fog/dynect/requests/dns/get_zone.rb +0 -57
  199. data/lib/fog/dynect/requests/dns/post_record.rb +0 -71
  200. data/lib/fog/dynect/requests/dns/post_session.rb +0 -43
  201. data/lib/fog/dynect/requests/dns/post_zone.rb +0 -70
  202. data/lib/fog/dynect/requests/dns/put_record.rb +0 -76
  203. data/lib/fog/dynect/requests/dns/put_zone.rb +0 -76
  204. data/tests/dynect/requests/dns/dns_tests.rb +0 -258
@@ -58,7 +58,7 @@ puts "\nNow creating server '#{server.name}' connected the the Internet and '#{n
58
58
 
59
59
  begin
60
60
  # Check every 5 seconds to see if server is in the active state (ready?).
61
- # If the server has not been built in 5 minutes (600 seconds) an exception will be raised.
61
+ # If the server has not been built in 10 minutes (600 seconds) an exception will be raised.
62
62
  server.wait_for(600, 5) do
63
63
  print "."
64
64
  STDOUT.flush
@@ -47,37 +47,38 @@ module Fog
47
47
 
48
48
  xml.GatewayIpsecVpnService {
49
49
  xml.IsEnabled vpn_config[:IsEnabled] if vpn_config.key?(:IsEnabled)
50
- tunnel_config = vpn_config[:Tunnel]
51
- xml.Tunnel {
52
- xml.Name tunnel_config[:Name]
53
- xml.Description tunnel_config[:Description]
54
- xml.IpsecVpnLocalPeer {
55
- xml.Id tunnel_config[:IpsecVpnLocalPeerId]
56
- xml.Name tunnel_config[:IpsecVpnLocalPeerName]
57
- }
58
- xml.PeerIpAddress tunnel_config[:PeerIpAddress]
59
- xml.PeerId tunnel_config[:PeerId]
60
- xml.LocalIpAddress tunnel_config[:LocalIpAddress]
61
- xml.LocalId tunnel_config[:LocalId]
62
- tunnel_config[:LocalSubnet].each do |subnet|
63
- xml.LocalSubnet {
64
- xml.Name subnet[:Name]
65
- xml.Gateway subnet[:Gateway]
66
- xml.Netmask subnet[:Netmask]
50
+ vpn_config[:Tunnel].each do |tunnel_config|
51
+ xml.Tunnel {
52
+ xml.Name tunnel_config[:Name]
53
+ xml.Description tunnel_config[:Description]
54
+ xml.IpsecVpnLocalPeer {
55
+ xml.Id tunnel_config[:IpsecVpnLocalPeerId]
56
+ xml.Name tunnel_config[:IpsecVpnLocalPeerName]
57
+ }
58
+ xml.PeerIpAddress tunnel_config[:PeerIpAddress]
59
+ xml.PeerId tunnel_config[:PeerId]
60
+ xml.LocalIpAddress tunnel_config[:LocalIpAddress]
61
+ xml.LocalId tunnel_config[:LocalId]
62
+ tunnel_config[:LocalSubnet].each do |subnet|
63
+ xml.LocalSubnet {
64
+ xml.Name subnet[:Name]
65
+ xml.Gateway subnet[:Gateway]
66
+ xml.Netmask subnet[:Netmask]
67
+ }
68
+ end
69
+ peer_subnet_config = tunnel_config[:PeerSubnet]
70
+ xml.PeerSubnet {
71
+ xml.Name peer_subnet_config[:Name]
72
+ xml.Gateway peer_subnet_config[:Gateway]
73
+ xml.Netmask peer_subnet_config[:Netmask]
67
74
  }
68
- end
69
- peer_subnet_config = tunnel_config[:PeerSubnet]
70
- xml.PeerSubnet {
71
- xml.Name peer_subnet_config[:Name]
72
- xml.Gateway peer_subnet_config[:Gateway]
73
- xml.Netmask peer_subnet_config[:Netmask]
75
+ xml.SharedSecret tunnel_config[:SharedSecret]
76
+ xml.SharedSecretEncrypted tunnel_config[:SharedSecretEncrypted] if tunnel_config.key?(:SharedSecretEncrypted)
77
+ xml.EncryptionProtocol tunnel_config[:EncryptionProtocol]
78
+ xml.Mtu tunnel_config[:Mtu]
79
+ xml.IsEnabled tunnel_config[:IsEnabled]
74
80
  }
75
- xml.SharedSecret tunnel_config[:SharedSecret]
76
- xml.SharedSecretEncrypted tunnel_config[:SharedSecretEncrypted] if tunnel_config.key?(:SharedSecretEncrypted)
77
- xml.EncryptionProtocol tunnel_config[:EncryptionProtocol]
78
- xml.Mtu tunnel_config[:Mtu]
79
- xml.IsEnabled tunnel_config[:IsEnabled]
80
- }
81
+ end
81
82
  }
82
83
  end
83
84
 
@@ -217,7 +218,7 @@ module Fog
217
218
 
218
219
  xml.Protocols {
219
220
  rule[:Protocols].each do |key, value|
220
- xml.send(key.to_s.capitalize, value)
221
+ xml.send(key.to_s.capitalize, value)
221
222
  end
222
223
  }
223
224
  xml.IcmpSubType rule[:IcmpSubType] if rule.key?(:IcmpSubType)
@@ -35,7 +35,7 @@ module Fog
35
35
 
36
36
  def non_running?
37
37
  if @service.show_progress? && (@last_progress ||= 0) < 100
38
- if status == 'running'
38
+ if status == 'running' || status == 'queued'
39
39
  Fog::Formatador.redisplay_progressbar(progress, 100, :label => operation_name, :started_at => start_time)
40
40
  @last_progress = progress
41
41
  elsif status == 'success'
@@ -43,7 +43,7 @@ module Fog
43
43
  @last_progress = 100
44
44
  end
45
45
  end
46
- status != 'running'
46
+ ! %w(running queued).include?(status)
47
47
  end
48
48
 
49
49
  def cancel
@@ -1,3 +1,3 @@
1
1
  module Fog
2
- VERSION = '1.32.0'
2
+ VERSION = '1.33.0'
3
3
  end
@@ -50,6 +50,7 @@ module Fog
50
50
  request :vm_clone
51
51
  request :vm_destroy
52
52
  request :vm_migrate
53
+ request :vm_execute
53
54
  request :list_datacenters
54
55
  request :get_datacenter
55
56
  request :list_clusters
@@ -13,7 +13,7 @@ module Fog
13
13
  def get_raw_resource_pool(name, cluster_name, datacenter_name)
14
14
  dc = find_raw_datacenter(datacenter_name)
15
15
  cluster = dc.find_compute_resource(cluster_name)
16
- name.nil? ? cluster.resourcePool : cluster.resourcePool.find( name)
16
+ name.nil? ? cluster.resourcePool : cluster.resourcePool.traverse(name)
17
17
  end
18
18
  end
19
19
 
@@ -31,9 +31,10 @@ module Fog
31
31
  def get_vm_by_name(name, dc)
32
32
  vms = raw_list_all_virtual_machines(dc)
33
33
 
34
- if name.include?('/')
35
- folder, basename = name.split('/')
36
- vms.keep_if { |v| v["name"] == basename && v.parent["name"] == folder }.first
34
+ if name.include?('/')
35
+ folder = File.dirname(name)
36
+ basename = File.basename(name)
37
+ vms.keep_if { |v| v["name"] == basename && v.parent.pretty_path.include?(folder) }.first
37
38
  else
38
39
  vms.keep_if { |v| v["name"] == name }.first
39
40
  end
@@ -41,7 +41,7 @@ module Fog
41
41
 
42
42
  def cluster_path(cluster, datacenter_name)
43
43
  datacenter = find_raw_datacenter(datacenter_name)
44
- cluster.pretty_path.gsub(/(#{datacenter.name}|#{datacenter.hostFolder.name})\//,'')
44
+ cluster.pretty_path.gsub(/(#{datacenter_name}|#{datacenter.hostFolder.name})\//,'')
45
45
  end
46
46
  end
47
47
 
@@ -28,8 +28,8 @@ module Fog
28
28
  #macAddress: "00:50:56:a9:00:28",
29
29
  #unitNumber: 7,
30
30
  #
31
- def list_vm_interfaces(vm_id)
32
- get_vm_ref(vm_id).config.hardware.device.grep(RbVmomi::VIM::VirtualEthernetCard).map do |nic|
31
+ def list_vm_interfaces(vm_id, datacenter = nil)
32
+ get_vm_ref(vm_id, datacenter).config.hardware.device.grep(RbVmomi::VIM::VirtualEthernetCard).map do |nic|
33
33
  {
34
34
  :name => nic.deviceInfo.label,
35
35
  :mac => nic.macAddress,
@@ -77,6 +77,14 @@ module Fog
77
77
  # Default true
78
78
  # * 'time_zone'<~String> - *REQUIRED* Only valid linux options
79
79
  # are valid - example: 'America/Denver'
80
+ # * 'interfaces' <~Array> - interfaces object to apply to
81
+ # the template when cloning: overrides the
82
+ # network_label, network_adapter_device_key and nic_type attributes
83
+ # * 'volumes' <~Array> - volumes object to apply to
84
+ # the template when cloning: this allows to resize the
85
+ # existing disks as well as add or remove them. The
86
+ # resizing is applied only when the size is bigger then the
87
+ # in size in the template
80
88
  def vm_clone(options = {})
81
89
  # Option handling
82
90
  options = vm_clone_check_options(options)
@@ -122,38 +130,21 @@ module Fog
122
130
  datastore_obj ||= nil
123
131
  virtual_machine_config_spec = RbVmomi::VIM::VirtualMachineConfigSpec()
124
132
 
125
- # Options['network']
126
- # Build up the config spec
127
- if ( options.key?('network_label') )
128
- config_spec_operation = RbVmomi::VIM::VirtualDeviceConfigSpecOperation('edit')
129
- # Get the portgroup and handle it from there.
130
- network = get_raw_network(options['network_label'],options['datacenter'])
131
- if ( network.kind_of? RbVmomi::VIM::DistributedVirtualPortgroup)
132
- # Create the NIC backing for the distributed virtual portgroup
133
- nic_backing_info = RbVmomi::VIM::VirtualEthernetCardDistributedVirtualPortBackingInfo(
134
- :port => RbVmomi::VIM::DistributedVirtualSwitchPortConnection(
135
- :portgroupKey => network.key,
136
- :switchUuid => network.config.distributedVirtualSwitch.uuid
137
- )
138
- )
139
- else
140
- # Otherwise it's a non distributed port group
141
- nic_backing_info = RbVmomi::VIM::VirtualEthernetCardNetworkBackingInfo(:deviceName => options['network_label'])
133
+ device_change = []
134
+ # fully futured interfaces api: replace the current nics
135
+ # with the new based on the specification
136
+ if (options.key?('interfaces') )
137
+ if options.key?('network_label')
138
+ raise ArgumentError, "interfaces option can't be specified together with network_label"
142
139
  end
143
- connectable = RbVmomi::VIM::VirtualDeviceConnectInfo(
144
- :allowGuestControl => true,
145
- :connected => true,
146
- :startConnected => true)
147
- device = RbVmomi::VIM.public_send "#{options['nic_type']}",
148
- :backing => nic_backing_info,
149
- :deviceInfo => RbVmomi::VIM::Description(:label => "Network adapter 1", :summary => options['network_label']),
150
- :key => options['network_adapter_device_key'],
151
- :connectable => connectable
152
- device_spec = RbVmomi::VIM::VirtualDeviceConfigSpec(
153
- :operation => config_spec_operation,
154
- :device => device)
155
- virtual_machine_config_spec.deviceChange = [device_spec]
140
+ device_change.concat(modify_template_nics_specs(template_path, options['interfaces'], options['datacenter']))
141
+ elsif options.key?('network_label')
142
+ device_change << modify_template_nics_simple_spec(options['network_label'], options['nic_type'], options['network_adapter_device_key'], options['datacenter'])
156
143
  end
144
+ if disks = options['volumes']
145
+ device_change.concat(modify_template_volumes_specs(vm_mob_ref, options['volumes']))
146
+ end
147
+ virtual_machine_config_spec.deviceChange = device_change if device_change.any?
157
148
  # Options['numCPUs'] or Options['memoryMB']
158
149
  # Build up the specification for Hardware, for more details see ____________
159
150
  # https://github.com/rlane/rbvmomi/blob/master/test/test_serialization.rb
@@ -625,6 +616,86 @@ module Fog
625
616
  'task_ref' => task._ref
626
617
  }
627
618
  end
619
+
620
+ # Build up the network config spec for simple case:
621
+ # simple case: apply just the network_label, nic_type and network_adapter_device_key
622
+ def modify_template_nics_simple_spec(network_label, nic_type, network_adapter_device_key, datacenter)
623
+ config_spec_operation = RbVmomi::VIM::VirtualDeviceConfigSpecOperation('edit')
624
+ # Get the portgroup and handle it from there.
625
+ network = get_raw_network(network_label, datacenter)
626
+ if ( network.kind_of? RbVmomi::VIM::DistributedVirtualPortgroup)
627
+ # Create the NIC backing for the distributed virtual portgroup
628
+ nic_backing_info = RbVmomi::VIM::VirtualEthernetCardDistributedVirtualPortBackingInfo(
629
+ :port => RbVmomi::VIM::DistributedVirtualSwitchPortConnection(
630
+ :portgroupKey => network.key,
631
+ :switchUuid => network.config.distributedVirtualSwitch.uuid
632
+ )
633
+ )
634
+ else
635
+ # Otherwise it's a non distributed port group
636
+ nic_backing_info = RbVmomi::VIM::VirtualEthernetCardNetworkBackingInfo(:deviceName => network_label)
637
+ end
638
+ connectable = RbVmomi::VIM::VirtualDeviceConnectInfo(
639
+ :allowGuestControl => true,
640
+ :connected => true,
641
+ :startConnected => true)
642
+ device = RbVmomi::VIM.public_send "#{nic_type}",
643
+ :backing => nic_backing_info,
644
+ :deviceInfo => RbVmomi::VIM::Description(:label => "Network adapter 1", :summary => network_label),
645
+ :key => network_adapter_device_key,
646
+ :connectable => connectable
647
+ device_spec = RbVmomi::VIM::VirtualDeviceConfigSpec(
648
+ :operation => config_spec_operation,
649
+ :device => device)
650
+ return device_spec
651
+ end
652
+
653
+
654
+ def modify_template_nics_specs(template_path, new_nics, datacenter)
655
+ #new_spec_operation = RbVmomi::VIM::VirtualDeviceConfigSpecOperation('new')
656
+ #remove_spec_operation = RbVmomi::VIM::VirtualDeviceConfigSpecOperation('remove')
657
+
658
+ template_nics = list_vm_interfaces(template_path, datacenter).map do |old_attributes|
659
+ Fog::Compute::Vsphere::Interface.new(old_attributes)
660
+ end
661
+ specs = []
662
+
663
+ template_nics.each do |interface|
664
+ specs << create_interface(interface, interface.key, :remove)
665
+ end
666
+
667
+ new_nics.each do |interface|
668
+ specs << create_interface(interface, 0, :add)
669
+ end
670
+
671
+ return specs
672
+ end
673
+
674
+ def modify_template_volumes_specs(vm_mob_ref, volumes)
675
+ template_volumes = vm_mob_ref.config.hardware.device.grep(RbVmomi::VIM::VirtualDisk)
676
+ modified_volumes = volumes.take(template_volumes.size)
677
+ new_volumes = volumes.drop(template_volumes.size)
678
+
679
+ specs = []
680
+ template_volumes.zip(modified_volumes).each do |template_volume, new_volume|
681
+ if new_volume
682
+ # updated the attribtues on the existing volume
683
+ # it's not allowed to reduce the size of the volume when cloning
684
+ if new_volume.size > template_volume.capacityInKB
685
+ template_volume.capacityInKB = new_volume.size
686
+ end
687
+ template_volume.backing.diskMode = new_volume.mode
688
+ template_volume.backing.thinProvisioned = new_volume.thin
689
+ specs << { :operation => :edit, :device => template_volume }
690
+ else
691
+ specs << { :operation => :remove,
692
+ :fileOperation => :destroy,
693
+ :device => template_volume }
694
+ end
695
+ end
696
+ specs.concat(new_volumes.map { |volume| create_disk(volume, volumes.index(volume)) })
697
+ return specs
698
+ end
628
699
  end
629
700
 
630
701
  class Mock
@@ -0,0 +1,47 @@
1
+ module Fog
2
+ module Compute
3
+ class Vsphere
4
+ class Real
5
+ # NOTE: you must be using vsphere_rev 5.0 or greater to use this functionality
6
+ # e.g. Fog::Compute.new(provider: "vsphere", vsphere_rev: "5.5", etc)
7
+ # * options<~Hash>:
8
+ # * 'instance_uuid'<~String> - *REQUIRED* the instance uuid you would like to operate on
9
+ # * 'command'<~String> *REQUIRED* the command to execute
10
+ # * 'args'<~String> arguments to pass the command
11
+ # * 'working_dir'<~String> path to the working directory
12
+ # * 'user'<~String> *REQUIRED* the ssh username you would like to login as
13
+ # * 'password'<~String> *REQUIRED* the ssh password for the user you would like to log in as
14
+ def vm_execute(options = {})
15
+ raise ArgumentError, "instance_uuid is a required parameter" unless options.key? 'instance_uuid'
16
+ raise ArgumentError, "command is a required parameter" unless options.key? 'command'
17
+ raise ArgumentError, "user is a required parameter" unless options.key? 'user'
18
+ raise ArgumentError, "password is a required parameter" unless options.key? 'password'
19
+
20
+ search_filter = { :uuid => options['instance_uuid'], 'vmSearch' => true, 'instanceUuid' => true }
21
+ vm_mob_ref = @connection.searchIndex.FindAllByUuid(search_filter).first
22
+
23
+ auth = RbVmomi::VIM::NamePasswordAuthentication(:interactiveSession => false,
24
+ :username => options['user'],
25
+ :password => options['password'])
26
+
27
+ spec = RbVmomi::VIM::GuestProgramSpec(:programPath => options['command'],
28
+ :arguments => options['args'],
29
+ :workingDirectory => options['working_dir'])
30
+
31
+ gom = @connection.serviceContent.guestOperationsManager
32
+ gom.processManager.StartProgramInGuest(:vm => vm_mob_ref, :auth => auth, :spec => spec)
33
+ end
34
+ end
35
+
36
+ class Mock
37
+ def vm_execute(options = {})
38
+ raise ArgumentError, "instance_uuid is a required parameter" unless options.key? 'instance_uuid'
39
+ raise ArgumentError, "command is a required parameter" unless options.key? 'command'
40
+ raise ArgumentError, "user is a required parameter" unless options.key? 'user'
41
+ raise ArgumentError, "password is a required parameter" unless options.key? 'password'
42
+ return 12345
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -113,6 +113,7 @@ Watchers | #{watchers}
113
113
  'Christopher Oliver',
114
114
  'Colin Hebert',
115
115
  'Daniel Reichert',
116
+ 'Darren Hague',
116
117
  'Decklin Foster',
117
118
  'Dylan Egan',
118
119
  'Erik Michaels-Ober',
@@ -0,0 +1,1394 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://devstack.openstack.stack:35357/v3/domains
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - fog-core/1.32.0
12
+ Content-Type:
13
+ - application/json
14
+ Accept:
15
+ - application/json
16
+ X-Auth-Token:
17
+ - ea1e9622dc8f4802a5f26955ccd8763f
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: ''
22
+ headers:
23
+ Date:
24
+ - Fri, 24 Jul 2015 11:03:53 GMT
25
+ Server:
26
+ - Apache/2.4.7 (Ubuntu)
27
+ Vary:
28
+ - X-Auth-Token
29
+ X-Openstack-Request-Id:
30
+ - req-6a9fcfa9-4368-4fa2-82f0-61f16dedb158
31
+ Content-Length:
32
+ - '317'
33
+ Content-Type:
34
+ - application/json
35
+ body:
36
+ encoding: US-ASCII
37
+ string: ! '{"domains": [{"links": {"self": "http://devstack.openstack.stack:35357/v3/domains/default"},
38
+ "enabled": true, "description": "Owns users and tenants (i.e. projects) available
39
+ on Identity API v2.", "name": "Default", "id": "default"}], "links": {"self":
40
+ "http://devstack.openstack.stack:35357/v3/domains", "previous": null, "next": null}}'
41
+ http_version:
42
+ recorded_at: Fri, 24 Jul 2015 11:04:14 GMT
43
+ - request:
44
+ method: post
45
+ uri: http://devstack.openstack.stack:35357/v3/projects
46
+ body:
47
+ encoding: UTF-8
48
+ string: ! '{"project":{"name":"p-foobar67"}}'
49
+ headers:
50
+ User-Agent:
51
+ - fog-core/1.32.0
52
+ Content-Type:
53
+ - application/json
54
+ Accept:
55
+ - application/json
56
+ X-Auth-Token:
57
+ - ea1e9622dc8f4802a5f26955ccd8763f
58
+ response:
59
+ status:
60
+ code: 201
61
+ message: ''
62
+ headers:
63
+ Date:
64
+ - Fri, 24 Jul 2015 11:03:53 GMT
65
+ Server:
66
+ - Apache/2.4.7 (Ubuntu)
67
+ Vary:
68
+ - X-Auth-Token
69
+ X-Openstack-Request-Id:
70
+ - req-c9af88df-0f52-4f8f-a318-492ff1bba5e5
71
+ Content-Length:
72
+ - '251'
73
+ Content-Type:
74
+ - application/json
75
+ body:
76
+ encoding: US-ASCII
77
+ string: ! '{"project": {"description": "", "links": {"self": "http://devstack.openstack.stack:35357/v3/projects/edd3bec6a30847349d69216ed4b3e0b4"},
78
+ "enabled": true, "id": "edd3bec6a30847349d69216ed4b3e0b4", "parent_id": null,
79
+ "domain_id": "default", "name": "p-foobar67"}}'
80
+ http_version:
81
+ recorded_at: Fri, 24 Jul 2015 11:04:14 GMT
82
+ - request:
83
+ method: post
84
+ uri: http://devstack.openstack.stack:35357/v3/projects
85
+ body:
86
+ encoding: UTF-8
87
+ string: ! '{"project":{"name":"p-baz67","parent_id":"edd3bec6a30847349d69216ed4b3e0b4"}}'
88
+ headers:
89
+ User-Agent:
90
+ - fog-core/1.32.0
91
+ Content-Type:
92
+ - application/json
93
+ Accept:
94
+ - application/json
95
+ X-Auth-Token:
96
+ - ea1e9622dc8f4802a5f26955ccd8763f
97
+ response:
98
+ status:
99
+ code: 201
100
+ message: ''
101
+ headers:
102
+ Date:
103
+ - Fri, 24 Jul 2015 11:03:53 GMT
104
+ Server:
105
+ - Apache/2.4.7 (Ubuntu)
106
+ Vary:
107
+ - X-Auth-Token
108
+ X-Openstack-Request-Id:
109
+ - req-14ed4a49-b23f-4d5d-822e-3241a9a28b9f
110
+ Content-Length:
111
+ - '278'
112
+ Content-Type:
113
+ - application/json
114
+ body:
115
+ encoding: US-ASCII
116
+ string: ! '{"project": {"description": "", "links": {"self": "http://devstack.openstack.stack:35357/v3/projects/570b1075f2a7470ea2b2f009f440b7b0"},
117
+ "enabled": true, "id": "570b1075f2a7470ea2b2f009f440b7b0", "parent_id": "edd3bec6a30847349d69216ed4b3e0b4",
118
+ "domain_id": "default", "name": "p-baz67"}}'
119
+ http_version:
120
+ recorded_at: Fri, 24 Jul 2015 11:04:14 GMT
121
+ - request:
122
+ method: get
123
+ uri: http://devstack.openstack.stack:35357/v3/projects?name=p-baz67
124
+ body:
125
+ encoding: US-ASCII
126
+ string: ''
127
+ headers:
128
+ User-Agent:
129
+ - fog-core/1.32.0
130
+ Content-Type:
131
+ - application/json
132
+ Accept:
133
+ - application/json
134
+ X-Auth-Token:
135
+ - ea1e9622dc8f4802a5f26955ccd8763f
136
+ response:
137
+ status:
138
+ code: 200
139
+ message: ''
140
+ headers:
141
+ Date:
142
+ - Fri, 24 Jul 2015 11:03:53 GMT
143
+ Server:
144
+ - Apache/2.4.7 (Ubuntu)
145
+ Vary:
146
+ - X-Auth-Token
147
+ X-Openstack-Request-Id:
148
+ - req-8517afe6-f361-4004-9a01-411d067f1a92
149
+ Content-Length:
150
+ - '388'
151
+ Content-Type:
152
+ - application/json
153
+ body:
154
+ encoding: US-ASCII
155
+ string: ! '{"links": {"self": "http://devstack.openstack.stack:35357/v3/projects?name=p-baz67",
156
+ "previous": null, "next": null}, "projects": [{"description": "", "links":
157
+ {"self": "http://devstack.openstack.stack:35357/v3/projects/570b1075f2a7470ea2b2f009f440b7b0"},
158
+ "enabled": true, "id": "570b1075f2a7470ea2b2f009f440b7b0", "parent_id": "edd3bec6a30847349d69216ed4b3e0b4",
159
+ "domain_id": "default", "name": "p-baz67"}]}'
160
+ http_version:
161
+ recorded_at: Fri, 24 Jul 2015 11:04:14 GMT
162
+ - request:
163
+ method: post
164
+ uri: http://devstack.openstack.stack:35357/v3/projects
165
+ body:
166
+ encoding: UTF-8
167
+ string: ! '{"project":{"name":"p-boo67","parent_id":"edd3bec6a30847349d69216ed4b3e0b4"}}'
168
+ headers:
169
+ User-Agent:
170
+ - fog-core/1.32.0
171
+ Content-Type:
172
+ - application/json
173
+ Accept:
174
+ - application/json
175
+ X-Auth-Token:
176
+ - ea1e9622dc8f4802a5f26955ccd8763f
177
+ response:
178
+ status:
179
+ code: 201
180
+ message: ''
181
+ headers:
182
+ Date:
183
+ - Fri, 24 Jul 2015 11:03:53 GMT
184
+ Server:
185
+ - Apache/2.4.7 (Ubuntu)
186
+ Vary:
187
+ - X-Auth-Token
188
+ X-Openstack-Request-Id:
189
+ - req-2229c28f-94de-4fdd-b839-e8e23b68c2d3
190
+ Content-Length:
191
+ - '278'
192
+ Content-Type:
193
+ - application/json
194
+ body:
195
+ encoding: US-ASCII
196
+ string: ! '{"project": {"description": "", "links": {"self": "http://devstack.openstack.stack:35357/v3/projects/8e1bc4fbfd6c47fea94d0e6ebad05be6"},
197
+ "enabled": true, "id": "8e1bc4fbfd6c47fea94d0e6ebad05be6", "parent_id": "edd3bec6a30847349d69216ed4b3e0b4",
198
+ "domain_id": "default", "name": "p-boo67"}}'
199
+ http_version:
200
+ recorded_at: Fri, 24 Jul 2015 11:04:14 GMT
201
+ - request:
202
+ method: post
203
+ uri: http://devstack.openstack.stack:35357/v3/projects
204
+ body:
205
+ encoding: UTF-8
206
+ string: ! '{"project":{"name":"p-booboo67","parent_id":"8e1bc4fbfd6c47fea94d0e6ebad05be6"}}'
207
+ headers:
208
+ User-Agent:
209
+ - fog-core/1.32.0
210
+ Content-Type:
211
+ - application/json
212
+ Accept:
213
+ - application/json
214
+ X-Auth-Token:
215
+ - ea1e9622dc8f4802a5f26955ccd8763f
216
+ response:
217
+ status:
218
+ code: 201
219
+ message: ''
220
+ headers:
221
+ Date:
222
+ - Fri, 24 Jul 2015 11:03:53 GMT
223
+ Server:
224
+ - Apache/2.4.7 (Ubuntu)
225
+ Vary:
226
+ - X-Auth-Token
227
+ X-Openstack-Request-Id:
228
+ - req-d36dac0b-3ee8-497f-90b6-ea7ee434bca5
229
+ Content-Length:
230
+ - '281'
231
+ Content-Type:
232
+ - application/json
233
+ body:
234
+ encoding: US-ASCII
235
+ string: ! '{"project": {"description": "", "links": {"self": "http://devstack.openstack.stack:35357/v3/projects/15a7ecafe8c44fe18cb9b3ca009f8259"},
236
+ "enabled": true, "id": "15a7ecafe8c44fe18cb9b3ca009f8259", "parent_id": "8e1bc4fbfd6c47fea94d0e6ebad05be6",
237
+ "domain_id": "default", "name": "p-booboo67"}}'
238
+ http_version:
239
+ recorded_at: Fri, 24 Jul 2015 11:04:14 GMT
240
+ - request:
241
+ method: post
242
+ uri: http://devstack.openstack.stack:35357/v3/roles
243
+ body:
244
+ encoding: UTF-8
245
+ string: ! '{"role":{"name":"r-project67"}}'
246
+ headers:
247
+ User-Agent:
248
+ - fog-core/1.32.0
249
+ Content-Type:
250
+ - application/json
251
+ Accept:
252
+ - application/json
253
+ X-Auth-Token:
254
+ - ea1e9622dc8f4802a5f26955ccd8763f
255
+ response:
256
+ status:
257
+ code: 201
258
+ message: ''
259
+ headers:
260
+ Date:
261
+ - Fri, 24 Jul 2015 11:03:54 GMT
262
+ Server:
263
+ - Apache/2.4.7 (Ubuntu)
264
+ Vary:
265
+ - X-Auth-Token
266
+ X-Openstack-Request-Id:
267
+ - req-105f752a-0c7a-492a-9080-e8bf5767fa55
268
+ Content-Length:
269
+ - '167'
270
+ Content-Type:
271
+ - application/json
272
+ body:
273
+ encoding: US-ASCII
274
+ string: ! '{"role": {"id": "9eeae75b331946dd907f16d3dccb916a", "links": {"self":
275
+ "http://devstack.openstack.stack:35357/v3/roles/9eeae75b331946dd907f16d3dccb916a"},
276
+ "name": "r-project67"}}'
277
+ http_version:
278
+ recorded_at: Fri, 24 Jul 2015 11:04:14 GMT
279
+ - request:
280
+ method: put
281
+ uri: http://devstack.openstack.stack:35357/v3/projects/edd3bec6a30847349d69216ed4b3e0b4/users/aa9f25defa6d4cafb48466df83106065/roles/9eeae75b331946dd907f16d3dccb916a
282
+ body:
283
+ encoding: US-ASCII
284
+ string: ''
285
+ headers:
286
+ User-Agent:
287
+ - fog-core/1.32.0
288
+ Content-Type:
289
+ - application/json
290
+ Accept:
291
+ - application/json
292
+ X-Auth-Token:
293
+ - ea1e9622dc8f4802a5f26955ccd8763f
294
+ response:
295
+ status:
296
+ code: 204
297
+ message: ''
298
+ headers:
299
+ Date:
300
+ - Fri, 24 Jul 2015 11:03:54 GMT
301
+ Server:
302
+ - Apache/2.4.7 (Ubuntu)
303
+ Vary:
304
+ - X-Auth-Token
305
+ X-Openstack-Request-Id:
306
+ - req-895af830-2d83-433d-ba23-8ab43a67483a
307
+ Content-Length:
308
+ - '0'
309
+ body:
310
+ encoding: US-ASCII
311
+ string: ''
312
+ http_version:
313
+ recorded_at: Fri, 24 Jul 2015 11:04:15 GMT
314
+ - request:
315
+ method: put
316
+ uri: http://devstack.openstack.stack:35357/v3/projects/570b1075f2a7470ea2b2f009f440b7b0/users/aa9f25defa6d4cafb48466df83106065/roles/9eeae75b331946dd907f16d3dccb916a
317
+ body:
318
+ encoding: US-ASCII
319
+ string: ''
320
+ headers:
321
+ User-Agent:
322
+ - fog-core/1.32.0
323
+ Content-Type:
324
+ - application/json
325
+ Accept:
326
+ - application/json
327
+ X-Auth-Token:
328
+ - ea1e9622dc8f4802a5f26955ccd8763f
329
+ response:
330
+ status:
331
+ code: 204
332
+ message: ''
333
+ headers:
334
+ Date:
335
+ - Fri, 24 Jul 2015 11:03:54 GMT
336
+ Server:
337
+ - Apache/2.4.7 (Ubuntu)
338
+ Vary:
339
+ - X-Auth-Token
340
+ X-Openstack-Request-Id:
341
+ - req-7f126391-17af-4ca1-a348-fe4280c57450
342
+ Content-Length:
343
+ - '0'
344
+ body:
345
+ encoding: US-ASCII
346
+ string: ''
347
+ http_version:
348
+ recorded_at: Fri, 24 Jul 2015 11:04:15 GMT
349
+ - request:
350
+ method: put
351
+ uri: http://devstack.openstack.stack:35357/v3/projects/8e1bc4fbfd6c47fea94d0e6ebad05be6/users/aa9f25defa6d4cafb48466df83106065/roles/9eeae75b331946dd907f16d3dccb916a
352
+ body:
353
+ encoding: US-ASCII
354
+ string: ''
355
+ headers:
356
+ User-Agent:
357
+ - fog-core/1.32.0
358
+ Content-Type:
359
+ - application/json
360
+ Accept:
361
+ - application/json
362
+ X-Auth-Token:
363
+ - ea1e9622dc8f4802a5f26955ccd8763f
364
+ response:
365
+ status:
366
+ code: 204
367
+ message: ''
368
+ headers:
369
+ Date:
370
+ - Fri, 24 Jul 2015 11:03:54 GMT
371
+ Server:
372
+ - Apache/2.4.7 (Ubuntu)
373
+ Vary:
374
+ - X-Auth-Token
375
+ X-Openstack-Request-Id:
376
+ - req-91451272-cef2-467c-80aa-5de40998c2f2
377
+ Content-Length:
378
+ - '0'
379
+ body:
380
+ encoding: US-ASCII
381
+ string: ''
382
+ http_version:
383
+ recorded_at: Fri, 24 Jul 2015 11:04:15 GMT
384
+ - request:
385
+ method: put
386
+ uri: http://devstack.openstack.stack:35357/v3/projects/15a7ecafe8c44fe18cb9b3ca009f8259/users/aa9f25defa6d4cafb48466df83106065/roles/9eeae75b331946dd907f16d3dccb916a
387
+ body:
388
+ encoding: US-ASCII
389
+ string: ''
390
+ headers:
391
+ User-Agent:
392
+ - fog-core/1.32.0
393
+ Content-Type:
394
+ - application/json
395
+ Accept:
396
+ - application/json
397
+ X-Auth-Token:
398
+ - ea1e9622dc8f4802a5f26955ccd8763f
399
+ response:
400
+ status:
401
+ code: 204
402
+ message: ''
403
+ headers:
404
+ Date:
405
+ - Fri, 24 Jul 2015 11:03:54 GMT
406
+ Server:
407
+ - Apache/2.4.7 (Ubuntu)
408
+ Vary:
409
+ - X-Auth-Token
410
+ X-Openstack-Request-Id:
411
+ - req-1cdb03bc-58c5-4d04-b585-19e44ce2d32f
412
+ Content-Length:
413
+ - '0'
414
+ body:
415
+ encoding: US-ASCII
416
+ string: ''
417
+ http_version:
418
+ recorded_at: Fri, 24 Jul 2015 11:04:15 GMT
419
+ - request:
420
+ method: get
421
+ uri: http://devstack.openstack.stack:35357/v3/projects/edd3bec6a30847349d69216ed4b3e0b4?subtree_as_ids
422
+ body:
423
+ encoding: US-ASCII
424
+ string: ''
425
+ headers:
426
+ User-Agent:
427
+ - fog-core/1.32.0
428
+ Content-Type:
429
+ - application/json
430
+ Accept:
431
+ - application/json
432
+ X-Auth-Token:
433
+ - ea1e9622dc8f4802a5f26955ccd8763f
434
+ response:
435
+ status:
436
+ code: 200
437
+ message: ''
438
+ headers:
439
+ Date:
440
+ - Fri, 24 Jul 2015 11:03:54 GMT
441
+ Server:
442
+ - Apache/2.4.7 (Ubuntu)
443
+ Vary:
444
+ - X-Auth-Token
445
+ X-Openstack-Request-Id:
446
+ - req-0a1a824a-364e-4afc-ba89-91c256128885
447
+ Content-Length:
448
+ - '386'
449
+ Content-Type:
450
+ - application/json
451
+ body:
452
+ encoding: US-ASCII
453
+ string: ! '{"project": {"description": "", "links": {"self": "http://devstack.openstack.stack:35357/v3/projects/edd3bec6a30847349d69216ed4b3e0b4"},
454
+ "enabled": true, "subtree": {"570b1075f2a7470ea2b2f009f440b7b0": null, "8e1bc4fbfd6c47fea94d0e6ebad05be6":
455
+ {"15a7ecafe8c44fe18cb9b3ca009f8259": null}}, "id": "edd3bec6a30847349d69216ed4b3e0b4",
456
+ "parent_id": null, "domain_id": "default", "name": "p-foobar67"}}'
457
+ http_version:
458
+ recorded_at: Fri, 24 Jul 2015 11:04:15 GMT
459
+ - request:
460
+ method: get
461
+ uri: http://devstack.openstack.stack:35357/v3/projects/edd3bec6a30847349d69216ed4b3e0b4?subtree_as_list
462
+ body:
463
+ encoding: US-ASCII
464
+ string: ''
465
+ headers:
466
+ User-Agent:
467
+ - fog-core/1.32.0
468
+ Content-Type:
469
+ - application/json
470
+ Accept:
471
+ - application/json
472
+ X-Auth-Token:
473
+ - ea1e9622dc8f4802a5f26955ccd8763f
474
+ response:
475
+ status:
476
+ code: 200
477
+ message: ''
478
+ headers:
479
+ Date:
480
+ - Fri, 24 Jul 2015 11:03:54 GMT
481
+ Server:
482
+ - Apache/2.4.7 (Ubuntu)
483
+ Vary:
484
+ - X-Auth-Token
485
+ X-Openstack-Request-Id:
486
+ - req-b6f5c89d-e9bb-4ab9-9ea7-7ac8c2959b37
487
+ Content-Length:
488
+ - '1107'
489
+ Content-Type:
490
+ - application/json
491
+ body:
492
+ encoding: US-ASCII
493
+ string: ! '{"project": {"description": "", "links": {"self": "http://devstack.openstack.stack:35357/v3/projects/edd3bec6a30847349d69216ed4b3e0b4"},
494
+ "enabled": true, "subtree": [{"project": {"description": "", "links": {"self":
495
+ "http://devstack.openstack.stack:35357/v3/projects/570b1075f2a7470ea2b2f009f440b7b0"},
496
+ "enabled": true, "id": "570b1075f2a7470ea2b2f009f440b7b0", "parent_id": "edd3bec6a30847349d69216ed4b3e0b4",
497
+ "domain_id": "default", "name": "p-baz67"}}, {"project": {"description": "",
498
+ "links": {"self": "http://devstack.openstack.stack:35357/v3/projects/8e1bc4fbfd6c47fea94d0e6ebad05be6"},
499
+ "enabled": true, "id": "8e1bc4fbfd6c47fea94d0e6ebad05be6", "parent_id": "edd3bec6a30847349d69216ed4b3e0b4",
500
+ "domain_id": "default", "name": "p-boo67"}}, {"project": {"description": "",
501
+ "links": {"self": "http://devstack.openstack.stack:35357/v3/projects/15a7ecafe8c44fe18cb9b3ca009f8259"},
502
+ "enabled": true, "id": "15a7ecafe8c44fe18cb9b3ca009f8259", "parent_id": "8e1bc4fbfd6c47fea94d0e6ebad05be6",
503
+ "domain_id": "default", "name": "p-booboo67"}}], "id": "edd3bec6a30847349d69216ed4b3e0b4",
504
+ "parent_id": null, "domain_id": "default", "name": "p-foobar67"}}'
505
+ http_version:
506
+ recorded_at: Fri, 24 Jul 2015 11:04:15 GMT
507
+ - request:
508
+ method: post
509
+ uri: http://devstack.openstack.stack:35357/v3/projects
510
+ body:
511
+ encoding: UTF-8
512
+ string: ! '{"project":{"name":"p-fooboo67","parent_id":"8e1bc4fbfd6c47fea94d0e6ebad05be6"}}'
513
+ headers:
514
+ User-Agent:
515
+ - fog-core/1.32.0
516
+ Content-Type:
517
+ - application/json
518
+ Accept:
519
+ - application/json
520
+ X-Auth-Token:
521
+ - ea1e9622dc8f4802a5f26955ccd8763f
522
+ response:
523
+ status:
524
+ code: 201
525
+ message: ''
526
+ headers:
527
+ Date:
528
+ - Fri, 24 Jul 2015 11:03:54 GMT
529
+ Server:
530
+ - Apache/2.4.7 (Ubuntu)
531
+ Vary:
532
+ - X-Auth-Token
533
+ X-Openstack-Request-Id:
534
+ - req-7d289ea5-869d-4c95-aa82-194ac4cb805d
535
+ Content-Length:
536
+ - '281'
537
+ Content-Type:
538
+ - application/json
539
+ body:
540
+ encoding: US-ASCII
541
+ string: ! '{"project": {"description": "", "links": {"self": "http://devstack.openstack.stack:35357/v3/projects/a288e7f1645e442da84232108c7e3ec9"},
542
+ "enabled": true, "id": "a288e7f1645e442da84232108c7e3ec9", "parent_id": "8e1bc4fbfd6c47fea94d0e6ebad05be6",
543
+ "domain_id": "default", "name": "p-fooboo67"}}'
544
+ http_version:
545
+ recorded_at: Fri, 24 Jul 2015 11:04:15 GMT
546
+ - request:
547
+ method: put
548
+ uri: http://devstack.openstack.stack:35357/v3/projects/a288e7f1645e442da84232108c7e3ec9/users/aa9f25defa6d4cafb48466df83106065/roles/9eeae75b331946dd907f16d3dccb916a
549
+ body:
550
+ encoding: US-ASCII
551
+ string: ''
552
+ headers:
553
+ User-Agent:
554
+ - fog-core/1.32.0
555
+ Content-Type:
556
+ - application/json
557
+ Accept:
558
+ - application/json
559
+ X-Auth-Token:
560
+ - ea1e9622dc8f4802a5f26955ccd8763f
561
+ response:
562
+ status:
563
+ code: 204
564
+ message: ''
565
+ headers:
566
+ Date:
567
+ - Fri, 24 Jul 2015 11:03:54 GMT
568
+ Server:
569
+ - Apache/2.4.7 (Ubuntu)
570
+ Vary:
571
+ - X-Auth-Token
572
+ X-Openstack-Request-Id:
573
+ - req-9a87ff8d-26a2-43fb-ad63-cf03e2324854
574
+ Content-Length:
575
+ - '0'
576
+ body:
577
+ encoding: US-ASCII
578
+ string: ''
579
+ http_version:
580
+ recorded_at: Fri, 24 Jul 2015 11:04:15 GMT
581
+ - request:
582
+ method: get
583
+ uri: http://devstack.openstack.stack:35357/v3/projects/edd3bec6a30847349d69216ed4b3e0b4?subtree_as_list
584
+ body:
585
+ encoding: US-ASCII
586
+ string: ''
587
+ headers:
588
+ User-Agent:
589
+ - fog-core/1.32.0
590
+ Content-Type:
591
+ - application/json
592
+ Accept:
593
+ - application/json
594
+ X-Auth-Token:
595
+ - ea1e9622dc8f4802a5f26955ccd8763f
596
+ response:
597
+ status:
598
+ code: 200
599
+ message: ''
600
+ headers:
601
+ Date:
602
+ - Fri, 24 Jul 2015 11:03:54 GMT
603
+ Server:
604
+ - Apache/2.4.7 (Ubuntu)
605
+ Vary:
606
+ - X-Auth-Token
607
+ X-Openstack-Request-Id:
608
+ - req-bee9ca26-a2e6-401b-95da-041161d09bde
609
+ Content-Length:
610
+ - '1390'
611
+ Content-Type:
612
+ - application/json
613
+ body:
614
+ encoding: US-ASCII
615
+ string: ! '{"project": {"description": "", "links": {"self": "http://devstack.openstack.stack:35357/v3/projects/edd3bec6a30847349d69216ed4b3e0b4"},
616
+ "enabled": true, "subtree": [{"project": {"description": "", "links": {"self":
617
+ "http://devstack.openstack.stack:35357/v3/projects/570b1075f2a7470ea2b2f009f440b7b0"},
618
+ "enabled": true, "id": "570b1075f2a7470ea2b2f009f440b7b0", "parent_id": "edd3bec6a30847349d69216ed4b3e0b4",
619
+ "domain_id": "default", "name": "p-baz67"}}, {"project": {"description": "",
620
+ "links": {"self": "http://devstack.openstack.stack:35357/v3/projects/8e1bc4fbfd6c47fea94d0e6ebad05be6"},
621
+ "enabled": true, "id": "8e1bc4fbfd6c47fea94d0e6ebad05be6", "parent_id": "edd3bec6a30847349d69216ed4b3e0b4",
622
+ "domain_id": "default", "name": "p-boo67"}}, {"project": {"description": "",
623
+ "links": {"self": "http://devstack.openstack.stack:35357/v3/projects/15a7ecafe8c44fe18cb9b3ca009f8259"},
624
+ "enabled": true, "id": "15a7ecafe8c44fe18cb9b3ca009f8259", "parent_id": "8e1bc4fbfd6c47fea94d0e6ebad05be6",
625
+ "domain_id": "default", "name": "p-booboo67"}}, {"project": {"description":
626
+ "", "links": {"self": "http://devstack.openstack.stack:35357/v3/projects/a288e7f1645e442da84232108c7e3ec9"},
627
+ "enabled": true, "id": "a288e7f1645e442da84232108c7e3ec9", "parent_id": "8e1bc4fbfd6c47fea94d0e6ebad05be6",
628
+ "domain_id": "default", "name": "p-fooboo67"}}], "id": "edd3bec6a30847349d69216ed4b3e0b4",
629
+ "parent_id": null, "domain_id": "default", "name": "p-foobar67"}}'
630
+ http_version:
631
+ recorded_at: Fri, 24 Jul 2015 11:04:15 GMT
632
+ - request:
633
+ method: get
634
+ uri: http://devstack.openstack.stack:35357/v3/projects/15a7ecafe8c44fe18cb9b3ca009f8259?parents_as_ids
635
+ body:
636
+ encoding: US-ASCII
637
+ string: ''
638
+ headers:
639
+ User-Agent:
640
+ - fog-core/1.32.0
641
+ Content-Type:
642
+ - application/json
643
+ Accept:
644
+ - application/json
645
+ X-Auth-Token:
646
+ - ea1e9622dc8f4802a5f26955ccd8763f
647
+ response:
648
+ status:
649
+ code: 200
650
+ message: ''
651
+ headers:
652
+ Date:
653
+ - Fri, 24 Jul 2015 11:03:54 GMT
654
+ Server:
655
+ - Apache/2.4.7 (Ubuntu)
656
+ Vary:
657
+ - X-Auth-Token
658
+ X-Openstack-Request-Id:
659
+ - req-00f313f0-b3e0-4039-b246-cb2bd06dd51f
660
+ Content-Length:
661
+ - '374'
662
+ Content-Type:
663
+ - application/json
664
+ body:
665
+ encoding: US-ASCII
666
+ string: ! '{"project": {"description": "", "links": {"self": "http://devstack.openstack.stack:35357/v3/projects/15a7ecafe8c44fe18cb9b3ca009f8259"},
667
+ "enabled": true, "id": "15a7ecafe8c44fe18cb9b3ca009f8259", "parent_id": "8e1bc4fbfd6c47fea94d0e6ebad05be6",
668
+ "parents": {"8e1bc4fbfd6c47fea94d0e6ebad05be6": {"edd3bec6a30847349d69216ed4b3e0b4":
669
+ null}}, "domain_id": "default", "name": "p-booboo67"}}'
670
+ http_version:
671
+ recorded_at: Fri, 24 Jul 2015 11:04:15 GMT
672
+ - request:
673
+ method: get
674
+ uri: http://devstack.openstack.stack:35357/v3/projects/15a7ecafe8c44fe18cb9b3ca009f8259?parents_as_list
675
+ body:
676
+ encoding: US-ASCII
677
+ string: ''
678
+ headers:
679
+ User-Agent:
680
+ - fog-core/1.32.0
681
+ Content-Type:
682
+ - application/json
683
+ Accept:
684
+ - application/json
685
+ X-Auth-Token:
686
+ - ea1e9622dc8f4802a5f26955ccd8763f
687
+ response:
688
+ status:
689
+ code: 200
690
+ message: ''
691
+ headers:
692
+ Date:
693
+ - Fri, 24 Jul 2015 11:03:54 GMT
694
+ Server:
695
+ - Apache/2.4.7 (Ubuntu)
696
+ Vary:
697
+ - X-Auth-Token
698
+ X-Openstack-Request-Id:
699
+ - req-343c722a-65c6-4427-8782-b370cca8be6c
700
+ Content-Length:
701
+ - '827'
702
+ Content-Type:
703
+ - application/json
704
+ body:
705
+ encoding: US-ASCII
706
+ string: ! '{"project": {"description": "", "links": {"self": "http://devstack.openstack.stack:35357/v3/projects/15a7ecafe8c44fe18cb9b3ca009f8259"},
707
+ "enabled": true, "id": "15a7ecafe8c44fe18cb9b3ca009f8259", "parent_id": "8e1bc4fbfd6c47fea94d0e6ebad05be6",
708
+ "parents": [{"project": {"description": "", "links": {"self": "http://devstack.openstack.stack:35357/v3/projects/8e1bc4fbfd6c47fea94d0e6ebad05be6"},
709
+ "enabled": true, "id": "8e1bc4fbfd6c47fea94d0e6ebad05be6", "parent_id": "edd3bec6a30847349d69216ed4b3e0b4",
710
+ "domain_id": "default", "name": "p-boo67"}}, {"project": {"description": "",
711
+ "links": {"self": "http://devstack.openstack.stack:35357/v3/projects/edd3bec6a30847349d69216ed4b3e0b4"},
712
+ "enabled": true, "id": "edd3bec6a30847349d69216ed4b3e0b4", "parent_id": null,
713
+ "domain_id": "default", "name": "p-foobar67"}}], "domain_id": "default", "name":
714
+ "p-booboo67"}}'
715
+ http_version:
716
+ recorded_at: Fri, 24 Jul 2015 11:04:15 GMT
717
+ - request:
718
+ method: delete
719
+ uri: http://devstack.openstack.stack:35357/v3/projects/a288e7f1645e442da84232108c7e3ec9
720
+ body:
721
+ encoding: US-ASCII
722
+ string: ''
723
+ headers:
724
+ User-Agent:
725
+ - fog-core/1.32.0
726
+ Content-Type:
727
+ - application/json
728
+ Accept:
729
+ - application/json
730
+ X-Auth-Token:
731
+ - ea1e9622dc8f4802a5f26955ccd8763f
732
+ response:
733
+ status:
734
+ code: 204
735
+ message: ''
736
+ headers:
737
+ Date:
738
+ - Fri, 24 Jul 2015 11:03:55 GMT
739
+ Server:
740
+ - Apache/2.4.7 (Ubuntu)
741
+ Vary:
742
+ - X-Auth-Token
743
+ X-Openstack-Request-Id:
744
+ - req-3e964bce-b106-4edf-bcdc-6da3d74f7f7c
745
+ Content-Length:
746
+ - '0'
747
+ body:
748
+ encoding: US-ASCII
749
+ string: ''
750
+ http_version:
751
+ recorded_at: Fri, 24 Jul 2015 11:04:16 GMT
752
+ - request:
753
+ method: delete
754
+ uri: http://devstack.openstack.stack:35357/v3/projects/15a7ecafe8c44fe18cb9b3ca009f8259
755
+ body:
756
+ encoding: US-ASCII
757
+ string: ''
758
+ headers:
759
+ User-Agent:
760
+ - fog-core/1.32.0
761
+ Content-Type:
762
+ - application/json
763
+ Accept:
764
+ - application/json
765
+ X-Auth-Token:
766
+ - ea1e9622dc8f4802a5f26955ccd8763f
767
+ response:
768
+ status:
769
+ code: 204
770
+ message: ''
771
+ headers:
772
+ Date:
773
+ - Fri, 24 Jul 2015 11:03:55 GMT
774
+ Server:
775
+ - Apache/2.4.7 (Ubuntu)
776
+ Vary:
777
+ - X-Auth-Token
778
+ X-Openstack-Request-Id:
779
+ - req-e0cd202d-c96f-4b82-b9e9-29650111b15e
780
+ Content-Length:
781
+ - '0'
782
+ body:
783
+ encoding: US-ASCII
784
+ string: ''
785
+ http_version:
786
+ recorded_at: Fri, 24 Jul 2015 11:04:16 GMT
787
+ - request:
788
+ method: delete
789
+ uri: http://devstack.openstack.stack:35357/v3/projects/8e1bc4fbfd6c47fea94d0e6ebad05be6
790
+ body:
791
+ encoding: US-ASCII
792
+ string: ''
793
+ headers:
794
+ User-Agent:
795
+ - fog-core/1.32.0
796
+ Content-Type:
797
+ - application/json
798
+ Accept:
799
+ - application/json
800
+ X-Auth-Token:
801
+ - ea1e9622dc8f4802a5f26955ccd8763f
802
+ response:
803
+ status:
804
+ code: 204
805
+ message: ''
806
+ headers:
807
+ Date:
808
+ - Fri, 24 Jul 2015 11:03:55 GMT
809
+ Server:
810
+ - Apache/2.4.7 (Ubuntu)
811
+ Vary:
812
+ - X-Auth-Token
813
+ X-Openstack-Request-Id:
814
+ - req-70eb87e6-a48c-4b76-8aa7-f2924b1aadc6
815
+ Content-Length:
816
+ - '0'
817
+ body:
818
+ encoding: US-ASCII
819
+ string: ''
820
+ http_version:
821
+ recorded_at: Fri, 24 Jul 2015 11:04:16 GMT
822
+ - request:
823
+ method: delete
824
+ uri: http://devstack.openstack.stack:35357/v3/projects/570b1075f2a7470ea2b2f009f440b7b0
825
+ body:
826
+ encoding: US-ASCII
827
+ string: ''
828
+ headers:
829
+ User-Agent:
830
+ - fog-core/1.32.0
831
+ Content-Type:
832
+ - application/json
833
+ Accept:
834
+ - application/json
835
+ X-Auth-Token:
836
+ - ea1e9622dc8f4802a5f26955ccd8763f
837
+ response:
838
+ status:
839
+ code: 204
840
+ message: ''
841
+ headers:
842
+ Date:
843
+ - Fri, 24 Jul 2015 11:03:55 GMT
844
+ Server:
845
+ - Apache/2.4.7 (Ubuntu)
846
+ Vary:
847
+ - X-Auth-Token
848
+ X-Openstack-Request-Id:
849
+ - req-997cf019-3a7a-4185-82bb-34a47e38bc21
850
+ Content-Length:
851
+ - '0'
852
+ body:
853
+ encoding: US-ASCII
854
+ string: ''
855
+ http_version:
856
+ recorded_at: Fri, 24 Jul 2015 11:04:16 GMT
857
+ - request:
858
+ method: delete
859
+ uri: http://devstack.openstack.stack:35357/v3/projects/edd3bec6a30847349d69216ed4b3e0b4
860
+ body:
861
+ encoding: US-ASCII
862
+ string: ''
863
+ headers:
864
+ User-Agent:
865
+ - fog-core/1.32.0
866
+ Content-Type:
867
+ - application/json
868
+ Accept:
869
+ - application/json
870
+ X-Auth-Token:
871
+ - ea1e9622dc8f4802a5f26955ccd8763f
872
+ response:
873
+ status:
874
+ code: 204
875
+ message: ''
876
+ headers:
877
+ Date:
878
+ - Fri, 24 Jul 2015 11:03:55 GMT
879
+ Server:
880
+ - Apache/2.4.7 (Ubuntu)
881
+ Vary:
882
+ - X-Auth-Token
883
+ X-Openstack-Request-Id:
884
+ - req-db82b42c-b459-4e5a-9bd8-cb5243f01213
885
+ Content-Length:
886
+ - '0'
887
+ body:
888
+ encoding: US-ASCII
889
+ string: ''
890
+ http_version:
891
+ recorded_at: Fri, 24 Jul 2015 11:04:16 GMT
892
+ - request:
893
+ method: delete
894
+ uri: http://devstack.openstack.stack:35357/v3/roles/9eeae75b331946dd907f16d3dccb916a
895
+ body:
896
+ encoding: US-ASCII
897
+ string: ''
898
+ headers:
899
+ User-Agent:
900
+ - fog-core/1.32.0
901
+ Content-Type:
902
+ - application/json
903
+ Accept:
904
+ - application/json
905
+ X-Auth-Token:
906
+ - ea1e9622dc8f4802a5f26955ccd8763f
907
+ response:
908
+ status:
909
+ code: 204
910
+ message: ''
911
+ headers:
912
+ Date:
913
+ - Fri, 24 Jul 2015 11:03:55 GMT
914
+ Server:
915
+ - Apache/2.4.7 (Ubuntu)
916
+ Vary:
917
+ - X-Auth-Token
918
+ X-Openstack-Request-Id:
919
+ - req-f3093cb8-4a6e-4510-8121-eb8829aa78e4
920
+ Content-Length:
921
+ - '0'
922
+ body:
923
+ encoding: US-ASCII
924
+ string: ''
925
+ http_version:
926
+ recorded_at: Fri, 24 Jul 2015 11:04:16 GMT
927
+ - request:
928
+ method: get
929
+ uri: http://devstack.openstack.stack:35357/v3/projects
930
+ body:
931
+ encoding: US-ASCII
932
+ string: ''
933
+ headers:
934
+ User-Agent:
935
+ - fog-core/1.32.0
936
+ Content-Type:
937
+ - application/json
938
+ Accept:
939
+ - application/json
940
+ X-Auth-Token:
941
+ - ea1e9622dc8f4802a5f26955ccd8763f
942
+ response:
943
+ status:
944
+ code: 200
945
+ message: ''
946
+ headers:
947
+ Date:
948
+ - Fri, 24 Jul 2015 11:03:55 GMT
949
+ Server:
950
+ - Apache/2.4.7 (Ubuntu)
951
+ Vary:
952
+ - X-Auth-Token
953
+ X-Openstack-Request-Id:
954
+ - req-11d93c10-819b-4af0-955c-728e195b9fdc
955
+ Content-Length:
956
+ - '1062'
957
+ Content-Type:
958
+ - application/json
959
+ body:
960
+ encoding: US-ASCII
961
+ string: ! '{"links": {"self": "http://devstack.openstack.stack:35357/v3/projects", "previous":
962
+ null, "next": null}, "projects": [{"description": "", "links": {"self": "http://devstack.openstack.stack:35357/v3/projects/287f46e0cc294b8cb0c276dd71b8710f"},
963
+ "enabled": true, "id": "287f46e0cc294b8cb0c276dd71b8710f", "parent_id": null,
964
+ "domain_id": "default", "name": "demo"}, {"description": "", "links": {"self":
965
+ "http://devstack.openstack.stack:35357/v3/projects/4bd6ed0a80b7465a8b25f4d7df1236ea"},
966
+ "enabled": true, "id": "4bd6ed0a80b7465a8b25f4d7df1236ea", "parent_id": null,
967
+ "domain_id": "default", "name": "invisible_to_admin"}, {"description": "",
968
+ "links": {"self": "http://devstack.openstack.stack:35357/v3/projects/711f0a64ef5046c084ce904b4445d119"},
969
+ "enabled": true, "id": "711f0a64ef5046c084ce904b4445d119", "parent_id": null,
970
+ "domain_id": "default", "name": "admin"}, {"description": "", "links": {"self":
971
+ "http://devstack.openstack.stack:35357/v3/projects/a9088d7853b843318cb026dc3373c174"},
972
+ "enabled": true, "id": "a9088d7853b843318cb026dc3373c174", "parent_id": null,
973
+ "domain_id": "default", "name": "service"}]}'
974
+ http_version:
975
+ recorded_at: Fri, 24 Jul 2015 11:04:16 GMT
976
+ - request:
977
+ method: get
978
+ uri: http://devstack.openstack.stack:35357/v3/projects/edd3bec6a30847349d69216ed4b3e0b4
979
+ body:
980
+ encoding: US-ASCII
981
+ string: ''
982
+ headers:
983
+ User-Agent:
984
+ - fog-core/1.32.0
985
+ Content-Type:
986
+ - application/json
987
+ Accept:
988
+ - application/json
989
+ X-Auth-Token:
990
+ - ea1e9622dc8f4802a5f26955ccd8763f
991
+ response:
992
+ status:
993
+ code: 404
994
+ message: ''
995
+ headers:
996
+ Date:
997
+ - Fri, 24 Jul 2015 11:03:55 GMT
998
+ Server:
999
+ - Apache/2.4.7 (Ubuntu)
1000
+ Vary:
1001
+ - X-Auth-Token
1002
+ X-Openstack-Request-Id:
1003
+ - req-015abdc2-1a35-43d3-bc65-c63f5f2dc272
1004
+ Content-Length:
1005
+ - '117'
1006
+ Content-Type:
1007
+ - application/json
1008
+ body:
1009
+ encoding: US-ASCII
1010
+ string: ! '{"error": {"message": "Could not find project: edd3bec6a30847349d69216ed4b3e0b4",
1011
+ "code": 404, "title": "Not Found"}}'
1012
+ http_version:
1013
+ recorded_at: Fri, 24 Jul 2015 11:04:16 GMT
1014
+ - request:
1015
+ method: get
1016
+ uri: http://devstack.openstack.stack:35357/v3/projects?name=p-booboo67
1017
+ body:
1018
+ encoding: US-ASCII
1019
+ string: ''
1020
+ headers:
1021
+ User-Agent:
1022
+ - fog-core/1.32.0
1023
+ Content-Type:
1024
+ - application/json
1025
+ Accept:
1026
+ - application/json
1027
+ X-Auth-Token:
1028
+ - ea1e9622dc8f4802a5f26955ccd8763f
1029
+ response:
1030
+ status:
1031
+ code: 200
1032
+ message: ''
1033
+ headers:
1034
+ Date:
1035
+ - Fri, 24 Jul 2015 11:03:55 GMT
1036
+ Server:
1037
+ - Apache/2.4.7 (Ubuntu)
1038
+ Vary:
1039
+ - X-Auth-Token
1040
+ X-Openstack-Request-Id:
1041
+ - req-f02cc3be-a027-491d-9e8a-bb9228e0d4e1
1042
+ Content-Length:
1043
+ - '126'
1044
+ Content-Type:
1045
+ - application/json
1046
+ body:
1047
+ encoding: US-ASCII
1048
+ string: ! '{"links": {"self": "http://devstack.openstack.stack:35357/v3/projects?name=p-booboo67",
1049
+ "previous": null, "next": null}, "projects": []}'
1050
+ http_version:
1051
+ recorded_at: Fri, 24 Jul 2015 11:04:16 GMT
1052
+ - request:
1053
+ method: get
1054
+ uri: http://devstack.openstack.stack:35357/v3/projects?name=p-booboo67
1055
+ body:
1056
+ encoding: US-ASCII
1057
+ string: ''
1058
+ headers:
1059
+ User-Agent:
1060
+ - fog-core/1.32.0
1061
+ Content-Type:
1062
+ - application/json
1063
+ Accept:
1064
+ - application/json
1065
+ X-Auth-Token:
1066
+ - ea1e9622dc8f4802a5f26955ccd8763f
1067
+ response:
1068
+ status:
1069
+ code: 200
1070
+ message: ''
1071
+ headers:
1072
+ Date:
1073
+ - Fri, 24 Jul 2015 11:03:55 GMT
1074
+ Server:
1075
+ - Apache/2.4.7 (Ubuntu)
1076
+ Vary:
1077
+ - X-Auth-Token
1078
+ X-Openstack-Request-Id:
1079
+ - req-83df3490-b901-4889-a900-a18e9a12c09f
1080
+ Content-Length:
1081
+ - '126'
1082
+ Content-Type:
1083
+ - application/json
1084
+ body:
1085
+ encoding: US-ASCII
1086
+ string: ! '{"links": {"self": "http://devstack.openstack.stack:35357/v3/projects?name=p-booboo67",
1087
+ "previous": null, "next": null}, "projects": []}'
1088
+ http_version:
1089
+ recorded_at: Fri, 24 Jul 2015 11:04:16 GMT
1090
+ - request:
1091
+ method: get
1092
+ uri: http://devstack.openstack.stack:35357/v3/projects?name=p-fooboo67
1093
+ body:
1094
+ encoding: US-ASCII
1095
+ string: ''
1096
+ headers:
1097
+ User-Agent:
1098
+ - fog-core/1.32.0
1099
+ Content-Type:
1100
+ - application/json
1101
+ Accept:
1102
+ - application/json
1103
+ X-Auth-Token:
1104
+ - ea1e9622dc8f4802a5f26955ccd8763f
1105
+ response:
1106
+ status:
1107
+ code: 200
1108
+ message: ''
1109
+ headers:
1110
+ Date:
1111
+ - Fri, 24 Jul 2015 11:03:56 GMT
1112
+ Server:
1113
+ - Apache/2.4.7 (Ubuntu)
1114
+ Vary:
1115
+ - X-Auth-Token
1116
+ X-Openstack-Request-Id:
1117
+ - req-6e0fad29-cbf5-43ca-9e78-2df6570346bc
1118
+ Content-Length:
1119
+ - '126'
1120
+ Content-Type:
1121
+ - application/json
1122
+ body:
1123
+ encoding: US-ASCII
1124
+ string: ! '{"links": {"self": "http://devstack.openstack.stack:35357/v3/projects?name=p-fooboo67",
1125
+ "previous": null, "next": null}, "projects": []}'
1126
+ http_version:
1127
+ recorded_at: Fri, 24 Jul 2015 11:04:16 GMT
1128
+ - request:
1129
+ method: get
1130
+ uri: http://devstack.openstack.stack:35357/v3/projects?name=p-fooboo67
1131
+ body:
1132
+ encoding: US-ASCII
1133
+ string: ''
1134
+ headers:
1135
+ User-Agent:
1136
+ - fog-core/1.32.0
1137
+ Content-Type:
1138
+ - application/json
1139
+ Accept:
1140
+ - application/json
1141
+ X-Auth-Token:
1142
+ - ea1e9622dc8f4802a5f26955ccd8763f
1143
+ response:
1144
+ status:
1145
+ code: 200
1146
+ message: ''
1147
+ headers:
1148
+ Date:
1149
+ - Fri, 24 Jul 2015 11:03:56 GMT
1150
+ Server:
1151
+ - Apache/2.4.7 (Ubuntu)
1152
+ Vary:
1153
+ - X-Auth-Token
1154
+ X-Openstack-Request-Id:
1155
+ - req-28156923-6d90-46e3-876b-85096a8e4ad5
1156
+ Content-Length:
1157
+ - '126'
1158
+ Content-Type:
1159
+ - application/json
1160
+ body:
1161
+ encoding: US-ASCII
1162
+ string: ! '{"links": {"self": "http://devstack.openstack.stack:35357/v3/projects?name=p-fooboo67",
1163
+ "previous": null, "next": null}, "projects": []}'
1164
+ http_version:
1165
+ recorded_at: Fri, 24 Jul 2015 11:04:17 GMT
1166
+ - request:
1167
+ method: get
1168
+ uri: http://devstack.openstack.stack:35357/v3/projects?name=p-boo67
1169
+ body:
1170
+ encoding: US-ASCII
1171
+ string: ''
1172
+ headers:
1173
+ User-Agent:
1174
+ - fog-core/1.32.0
1175
+ Content-Type:
1176
+ - application/json
1177
+ Accept:
1178
+ - application/json
1179
+ X-Auth-Token:
1180
+ - ea1e9622dc8f4802a5f26955ccd8763f
1181
+ response:
1182
+ status:
1183
+ code: 200
1184
+ message: ''
1185
+ headers:
1186
+ Date:
1187
+ - Fri, 24 Jul 2015 11:03:56 GMT
1188
+ Server:
1189
+ - Apache/2.4.7 (Ubuntu)
1190
+ Vary:
1191
+ - X-Auth-Token
1192
+ X-Openstack-Request-Id:
1193
+ - req-18d78997-d6be-4192-9354-329878be50ac
1194
+ Content-Length:
1195
+ - '123'
1196
+ Content-Type:
1197
+ - application/json
1198
+ body:
1199
+ encoding: US-ASCII
1200
+ string: ! '{"links": {"self": "http://devstack.openstack.stack:35357/v3/projects?name=p-boo67",
1201
+ "previous": null, "next": null}, "projects": []}'
1202
+ http_version:
1203
+ recorded_at: Fri, 24 Jul 2015 11:04:17 GMT
1204
+ - request:
1205
+ method: get
1206
+ uri: http://devstack.openstack.stack:35357/v3/projects?name=p-boo67
1207
+ body:
1208
+ encoding: US-ASCII
1209
+ string: ''
1210
+ headers:
1211
+ User-Agent:
1212
+ - fog-core/1.32.0
1213
+ Content-Type:
1214
+ - application/json
1215
+ Accept:
1216
+ - application/json
1217
+ X-Auth-Token:
1218
+ - ea1e9622dc8f4802a5f26955ccd8763f
1219
+ response:
1220
+ status:
1221
+ code: 200
1222
+ message: ''
1223
+ headers:
1224
+ Date:
1225
+ - Fri, 24 Jul 2015 11:03:56 GMT
1226
+ Server:
1227
+ - Apache/2.4.7 (Ubuntu)
1228
+ Vary:
1229
+ - X-Auth-Token
1230
+ X-Openstack-Request-Id:
1231
+ - req-02cd3c7c-ca92-4bd3-9f97-e76d374c007f
1232
+ Content-Length:
1233
+ - '123'
1234
+ Content-Type:
1235
+ - application/json
1236
+ body:
1237
+ encoding: US-ASCII
1238
+ string: ! '{"links": {"self": "http://devstack.openstack.stack:35357/v3/projects?name=p-boo67",
1239
+ "previous": null, "next": null}, "projects": []}'
1240
+ http_version:
1241
+ recorded_at: Fri, 24 Jul 2015 11:04:17 GMT
1242
+ - request:
1243
+ method: get
1244
+ uri: http://devstack.openstack.stack:35357/v3/projects?name=p-baz67
1245
+ body:
1246
+ encoding: US-ASCII
1247
+ string: ''
1248
+ headers:
1249
+ User-Agent:
1250
+ - fog-core/1.32.0
1251
+ Content-Type:
1252
+ - application/json
1253
+ Accept:
1254
+ - application/json
1255
+ X-Auth-Token:
1256
+ - ea1e9622dc8f4802a5f26955ccd8763f
1257
+ response:
1258
+ status:
1259
+ code: 200
1260
+ message: ''
1261
+ headers:
1262
+ Date:
1263
+ - Fri, 24 Jul 2015 11:03:56 GMT
1264
+ Server:
1265
+ - Apache/2.4.7 (Ubuntu)
1266
+ Vary:
1267
+ - X-Auth-Token
1268
+ X-Openstack-Request-Id:
1269
+ - req-8e20c713-9427-47a0-ba06-677f28a34e90
1270
+ Content-Length:
1271
+ - '123'
1272
+ Content-Type:
1273
+ - application/json
1274
+ body:
1275
+ encoding: US-ASCII
1276
+ string: ! '{"links": {"self": "http://devstack.openstack.stack:35357/v3/projects?name=p-baz67",
1277
+ "previous": null, "next": null}, "projects": []}'
1278
+ http_version:
1279
+ recorded_at: Fri, 24 Jul 2015 11:04:17 GMT
1280
+ - request:
1281
+ method: get
1282
+ uri: http://devstack.openstack.stack:35357/v3/projects?name=p-baz67
1283
+ body:
1284
+ encoding: US-ASCII
1285
+ string: ''
1286
+ headers:
1287
+ User-Agent:
1288
+ - fog-core/1.32.0
1289
+ Content-Type:
1290
+ - application/json
1291
+ Accept:
1292
+ - application/json
1293
+ X-Auth-Token:
1294
+ - ea1e9622dc8f4802a5f26955ccd8763f
1295
+ response:
1296
+ status:
1297
+ code: 200
1298
+ message: ''
1299
+ headers:
1300
+ Date:
1301
+ - Fri, 24 Jul 2015 11:03:56 GMT
1302
+ Server:
1303
+ - Apache/2.4.7 (Ubuntu)
1304
+ Vary:
1305
+ - X-Auth-Token
1306
+ X-Openstack-Request-Id:
1307
+ - req-4e575274-0e98-4415-be62-29103606464e
1308
+ Content-Length:
1309
+ - '123'
1310
+ Content-Type:
1311
+ - application/json
1312
+ body:
1313
+ encoding: US-ASCII
1314
+ string: ! '{"links": {"self": "http://devstack.openstack.stack:35357/v3/projects?name=p-baz67",
1315
+ "previous": null, "next": null}, "projects": []}'
1316
+ http_version:
1317
+ recorded_at: Fri, 24 Jul 2015 11:04:17 GMT
1318
+ - request:
1319
+ method: get
1320
+ uri: http://devstack.openstack.stack:35357/v3/projects?name=p-foobar67
1321
+ body:
1322
+ encoding: US-ASCII
1323
+ string: ''
1324
+ headers:
1325
+ User-Agent:
1326
+ - fog-core/1.32.0
1327
+ Content-Type:
1328
+ - application/json
1329
+ Accept:
1330
+ - application/json
1331
+ X-Auth-Token:
1332
+ - ea1e9622dc8f4802a5f26955ccd8763f
1333
+ response:
1334
+ status:
1335
+ code: 200
1336
+ message: ''
1337
+ headers:
1338
+ Date:
1339
+ - Fri, 24 Jul 2015 11:03:56 GMT
1340
+ Server:
1341
+ - Apache/2.4.7 (Ubuntu)
1342
+ Vary:
1343
+ - X-Auth-Token
1344
+ X-Openstack-Request-Id:
1345
+ - req-5e735cdd-d6fb-4228-8925-524f6e8a6ba9
1346
+ Content-Length:
1347
+ - '126'
1348
+ Content-Type:
1349
+ - application/json
1350
+ body:
1351
+ encoding: US-ASCII
1352
+ string: ! '{"links": {"self": "http://devstack.openstack.stack:35357/v3/projects?name=p-foobar67",
1353
+ "previous": null, "next": null}, "projects": []}'
1354
+ http_version:
1355
+ recorded_at: Fri, 24 Jul 2015 11:04:17 GMT
1356
+ - request:
1357
+ method: get
1358
+ uri: http://devstack.openstack.stack:35357/v3/projects?name=p-foobar67
1359
+ body:
1360
+ encoding: US-ASCII
1361
+ string: ''
1362
+ headers:
1363
+ User-Agent:
1364
+ - fog-core/1.32.0
1365
+ Content-Type:
1366
+ - application/json
1367
+ Accept:
1368
+ - application/json
1369
+ X-Auth-Token:
1370
+ - ea1e9622dc8f4802a5f26955ccd8763f
1371
+ response:
1372
+ status:
1373
+ code: 200
1374
+ message: ''
1375
+ headers:
1376
+ Date:
1377
+ - Fri, 24 Jul 2015 11:03:56 GMT
1378
+ Server:
1379
+ - Apache/2.4.7 (Ubuntu)
1380
+ Vary:
1381
+ - X-Auth-Token
1382
+ X-Openstack-Request-Id:
1383
+ - req-7405bdf6-3564-41ac-adc5-bec643ded99e
1384
+ Content-Length:
1385
+ - '126'
1386
+ Content-Type:
1387
+ - application/json
1388
+ body:
1389
+ encoding: US-ASCII
1390
+ string: ! '{"links": {"self": "http://devstack.openstack.stack:35357/v3/projects?name=p-foobar67",
1391
+ "previous": null, "next": null}, "projects": []}'
1392
+ http_version:
1393
+ recorded_at: Fri, 24 Jul 2015 11:04:17 GMT
1394
+ recorded_with: VCR 2.9.3