vcloud-box-spinner 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -1,5 +1,6 @@
1
1
  *.gem
2
2
  .bundle
3
+ bundle/*
3
4
  pkg/*
4
5
  vendor/*
5
6
  *.swp
data/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
+ 0.2.3 2013-09-04
2
+
3
+ - Increase spin up wait to 3 minutes.
4
+ - Cycle power to identify VMware Tools for Guest Customization.
5
+
1
6
  0.2.2 2013-08-13
2
7
 
3
8
  - Making --setup-script option while create action optional
data/docs/uuids.md CHANGED
@@ -1,41 +1,55 @@
1
1
  # Finding various UUIDs needed by the JSON files
2
2
 
3
- ## Catalog Item UUID
3
+ Using: [VCloud Tools](https://github.com/alphagov/vcloudtools)
4
4
 
5
- * Authorization:
6
5
 
7
- curl -v -X POST -d '' -H "Accept: application/*+xml;version=5.1" -u "username@org-name:password" "https://vendor-api-endpoint/api/sessions"
6
+ ## Logging into VCloud
8
7
 
9
- - The above returns x-vcloud-authorization token
10
- - The abpve request returns xml, which contains the reference to the organisation details url, similar to below
8
+ ```
9
+ #$> export VCLOUD_API_ROOT=https://api.vcd.example.com/api eval `vcloud-login`
10
+ Please log into vCloud
11
+ Username: username@organisation
12
+ Password:
13
+ ```
11
14
 
12
- <Link rel="down" type="application/vnd.vmware.vcloud.org+xml" name="org-name" href="https://vendor-api-endpoint/api/org/{org-uuid}"/>
15
+ ## Finding Catalog and VM Template UUIDs
13
16
 
14
- * Get org details:
15
17
 
16
- curl -v --insecure -H "x-vcloud-authorization: <token>" -H "Accept: application/*+xml;version=5.1" https://vendor-api-endpoint/api/org/{org-uuid}
18
+ ### Finding the organisation uuid
19
+
20
+ ```
21
+ #$> vcloud-browse /org | grep MyOrg
22
+ <Org type="application/vnd.vmware.vcloud.org+xml" name="MyOrg" href="https://api.vcd.example.com/api/org/77595ec2-2391-4817-9257-66b12533d684"/>
23
+ ```
17
24
 
18
- - The above returns catalog details. (In vcloud you have a catalog which is a group pf catalogItems i.e templates)
25
+ In this example, the Org UUID is `77595ec2-2391-4817-9257-66b12533d684`
19
26
 
20
- <Link rel="down" type="application/vnd.vmware.vcloud.catalog+xml" name="Default" href="https://vendor-api-endpoint/api/catalog/{catalog-uuid}"/>
27
+ ### Finding the catalog
21
28
 
22
- * Get catalog items
29
+ ```
30
+ #$> vcloud-browse /org/77595ec2-2391-4817-9257-66b12533d684 | grep vcloud.catalog+xml
31
+ <Link rel="down" type="application/vnd.vmware.vcloud.catalog+xml" name="Private" href="https://api.vcd.example.com/api/catalog/9250924f-20af-4bcc-9f50-1125a2c15d2c"/>
32
+ <Link rel="down" type="application/vnd.vmware.vcloud.catalog+xml" name="Public Catalogue" href="https://api.vcd.example.com/api/catalog/b695b0f0-1abf-4562-bd4a-d64cf133888b"/>
33
+ <Link rel="down" type="application/vnd.vmware.vcloud.catalog+xml" name="Default" href="https://api.vcd.example.com/api/catalog/3af329ef-3371-49d4-aaa0-0b98a03a9255"/>
34
+ ```
23
35
 
24
- curl -v --insecure -H "x-vcloud-authorization: {token}" -H "Accept: application/*+xml;version=5.1" https://vendor-api-endpoint/api/catalog/{catalog-uuid}
36
+ This lists three possible catalogs, Private, Default and Public Catalogue (yours may be named differently, or you may have a different number of them.)
25
37
 
26
- - The above returns all the catalogItems in the catalog, you can choose the desired one
38
+ In the next example, we will use the UUID of the "Public Catalogue" which is `b695b0f0-1abf-4562-bd4a-d64cf133888b`
27
39
 
28
- <CatalogItem type="application/vnd.vmware.vcloud.catalogItem+xml" name="{catalog-item-name}" href="https://vendor-api-endpoint/api/catalogItem/{catalog-item-uuid}"/>
40
+ ### Finding Templates within a Catalog
29
41
 
42
+ ```
43
+ [/Users/ssharpe]$ vcloud-browse /catalog/b695b0f0-1abf-4562-bd4a-d64cf133888b | grep catalogItem+xml
44
+ <CatalogItem type="application/vnd.vmware.vcloud.catalogItem+xml" name="Ubuntu 12.04 Desktop" href="https://api.vcd.example.com/api/catalogItem/4e376bed-5d4c-4748-9d0d-1469b24f31c0"/>
45
+ <CatalogItem type="application/vnd.vmware.vcloud.catalogItem+xml" name="Ubuntu 12.04 Server" href="https://api.vcd.example.com/api/catalogItem/4887d502-5873-4d0c-bb63-075792277ec6"/>
46
+ ```
30
47
 
31
- ## Network UUID
48
+ ## Finding Network UUIDs
32
49
 
33
- * Authorization: (same as describe in above steps)
34
-
35
- * Get org details:
36
-
37
- curl -v --insecure -H "x-vcloud-authorization: <token>" -H "Accept: application/*+xml;version=5.1" https://vendor-api-endpoint/api/org/{org-uuid}
38
-
39
- - The above returns network details, choose the one you need on basis of name
40
-
41
- <Link rel="down" type="application/vnd.vmware.vcloud.orgNetwork+xml" name="{network-name}" href="https://vendor-api-endpoint/api/network/{network-uuid}"/>
50
+ ```
51
+ #$> vcloud-browse /org/0e665418-a3d5-4363-aec0-f2da5ab399d9 | grep orgNetwork
52
+ <Link rel="down" type="application/vnd.vmware.vcloud.orgNetwork+xml" name="Net1" href="https://api.vcd.example.com/api/network/e22af121-cdaf-455b-b840-1d7283aaeca7"/>
53
+ <Link rel="down" type="application/vnd.vmware.vcloud.orgNetwork+xml" name="Net2" href="https://api.vcd.example.com/api/network/59defffb-f6b7-47b8-a82c-80a8bc3fc76b"/>
54
+ <Link rel="down" type="application/vnd.vmware.vcloud.orgNetwork+xml" name="Net3" href="https://api.vcd.example.com/api/network/91ae3fdb-e354-426c-be79-4911f7c5dbdb"/>
55
+ ```
@@ -51,6 +51,7 @@ module Provisioner
51
51
  guest_customization_section = customization_options[:GuestCustomizationSection]
52
52
 
53
53
  response = modify_xml(guest_customization_section[:href], guest_customization_section[:type]) do |xml|
54
+ xml.at_css('Enabled').content = 'true'
54
55
  xml.at_css('ComputerName').content = options[:vm_name]
55
56
  if xml.at_css('CustomizationScript').nil?
56
57
  xml.at_css('ComputerName').before("<CustomizationScript>#{CGI.escapeHTML(user_data)}</CustomizationScript>\n")
@@ -127,15 +128,8 @@ module Provisioner
127
128
  end
128
129
  private :update_network_connection_options
129
130
 
130
- def power_on(server)
131
- connection = compute.servers.service
132
- power_on_uri = server.links.find {|link| link[:rel] == 'power:powerOn' }[:href]
133
- connection.request(:uri => power_on_uri, :method => "POST", :expects => 202)
134
- end
135
- private :power_on
136
-
137
131
  def wait_for_vms_to_appear(server, options)
138
- 100.times.each do |x|
132
+ 180.times.each do |x|
139
133
  logger.debug("waiting for vm to spin up...")
140
134
  if server.attributes[:children] && server.attributes[:children][:href]
141
135
  return
@@ -149,17 +143,30 @@ module Provisioner
149
143
  end
150
144
  private :wait_for_vms_to_appear
151
145
 
146
+ def wait_for_vmware_tools(server)
147
+ logger.debug("cycling power to identify VMware Tools...")
148
+
149
+ server.power_on
150
+ server.wait_for { server.ready? }
151
+ server.wait_for(90) { attributes[:children][:RuntimeInfoSection][:VMWareTools] }
152
+
153
+ server.undeploy
154
+ server.wait_for { server.ready? }
155
+ end
156
+
152
157
  def launch_server name
153
158
  super
154
159
  server = provision(name, options)
155
160
 
156
161
  wait_for_vms_to_appear(server, options)
162
+ wait_for_vmware_tools(server)
157
163
 
158
164
  update_guest_customization_options(server, options)
159
165
  update_network_connection_options(server, options)
160
166
  update_machine_resources(server, options)
161
167
 
162
- power_on(server)
168
+ server.power_on
169
+ server.wait_for { server.ready? }
163
170
 
164
171
  server
165
172
  end
@@ -1,3 +1,3 @@
1
1
  module Provisioner
2
- VERSION = '0.2.2'
2
+ VERSION = '0.2.3'
3
3
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: vcloud-box-spinner
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.2.2
5
+ version: 0.2.3
6
6
  platform: ruby
7
7
  authors:
8
8
  - Garima Singh
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2013-08-13 00:00:00 Z
13
+ date: 2013-09-04 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rake
@@ -189,7 +189,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
189
189
  requirements:
190
190
  - - ">="
191
191
  - !ruby/object:Gem::Version
192
- hash: -764948646320920490
192
+ hash: 2958339827570531793
193
193
  segments:
194
194
  - 0
195
195
  version: "0"
@@ -198,7 +198,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
198
198
  requirements:
199
199
  - - ">="
200
200
  - !ruby/object:Gem::Version
201
- hash: -764948646320920490
201
+ hash: 2958339827570531793
202
202
  segments:
203
203
  - 0
204
204
  version: "0"