fog 0.0.76 → 0.0.77

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.
data/Rakefile CHANGED
@@ -92,6 +92,7 @@ task :release => :build do
92
92
  puts "You must be on the master branch to release!"
93
93
  exit!
94
94
  end
95
+ sh "sudo gem install pkg/#{name}-#{version}.gem"
95
96
  sh "git commit --allow-empty -a -m 'Release #{version}'"
96
97
  sh "git tag v#{version}"
97
98
  sh "git push origin master"
@@ -7,8 +7,8 @@ Gem::Specification.new do |s|
7
7
  ## If your rubyforge_project name is different, then edit it and comment out
8
8
  ## the sub! line in the Rakefile
9
9
  s.name = 'fog'
10
- s.version = '0.0.76'
11
- s.date = '2010-04-22'
10
+ s.version = '0.0.77'
11
+ s.date = '2010-04-23'
12
12
  s.rubyforge_project = 'fog'
13
13
 
14
14
  ## Make sure your summary is short. The description may be as long
data/lib/fog.rb CHANGED
@@ -30,7 +30,7 @@ require 'fog/terremark'
30
30
 
31
31
  module Fog
32
32
 
33
- VERSION = '0.0.76'
33
+ VERSION = '0.0.77'
34
34
 
35
35
  module Mock
36
36
  @delay = 1
@@ -194,8 +194,8 @@ module Fog
194
194
  def request(params)
195
195
  @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}")
196
196
 
197
- idempotent = params.delete(:idempotent)
198
- parser = params.delete(:parser)
197
+ idempotent = params.delete(:idempotent)
198
+ parser = params.delete(:parser)
199
199
 
200
200
  params.merge!({
201
201
  'AWSAccessKeyId' => @aws_access_key_id,
@@ -20,6 +20,10 @@ module Fog
20
20
  true
21
21
  end
22
22
 
23
+ def ready?
24
+ @status == 'completed'
25
+ end
26
+
23
27
  def save
24
28
  requires :volume_id
25
29
 
@@ -23,6 +23,8 @@ module Fog
23
23
 
24
24
  class Snapshots < Fog::Collection
25
25
 
26
+ attribute :owner, 'Owner'
27
+ attribute :restorable_by, 'RestorableBy'
26
28
  attribute :snapshot_id
27
29
  attribute :volume
28
30
 
@@ -33,8 +35,13 @@ module Fog
33
35
  super
34
36
  end
35
37
 
36
- def all(snapshot_id = @snapshot_id)
37
- @snapshot_id = snapshot_id
38
+ def all(snapshot_id = @snapshot_id, options = {})
39
+ options = {
40
+ 'Owner' => @owner || 'self',
41
+ 'RestorableBy' => @restorable_by
42
+ }
43
+ options = options.reject {|key,value| value.nil? || value.to_s.empty?}
44
+ merge_attributes(options)
38
45
  data = connection.describe_snapshots(snapshot_id).body
39
46
  load(data['snapshotSet'])
40
47
  if volume
@@ -7,7 +7,7 @@ module Fog
7
7
  #
8
8
  # ==== Parameters
9
9
  # * snapshot_id<~String> - ID of snapshot to delete
10
- # ==== Returns
10
+ #
11
11
  # ==== Returns
12
12
  # * response<~Excon::Response>:
13
13
  # * body<~Hash>:
@@ -7,6 +7,9 @@ module Fog
7
7
  #
8
8
  # ==== Parameters
9
9
  # * snapshot_id<~Array> - List of snapshots to describe, defaults to all
10
+ # * options<~Array>:
11
+ # * 'Owner'<~String> - Owner of snapshot in ['self', 'amazon', account_id]
12
+ # * 'RestorableBy'<~String> - Account id of user who can create volumes from this snapshot
10
13
  #
11
14
  # ==== Returns
12
15
  # * response<~Excon::Response>:
@@ -18,12 +21,13 @@ module Fog
18
21
  # * 'startTime'<~Time>: Timestamp of when snapshot was initiated
19
22
  # * 'status'<~String>: Snapshot state, in ['pending', 'completed']
20
23
  # * 'volumeId'<~String>: Id of volume that snapshot contains
21
- def describe_snapshots(snapshot_id = [])
22
- params = AWS.indexed_param('SnapshotId', snapshot_id)
24
+ def describe_snapshots(snapshot_id = [], options = {})
25
+ options['Owner'] ||= 'self'
26
+ options.merge!(AWS.indexed_param('SnapshotId', snapshot_id))
23
27
  request({
24
28
  'Action' => 'DescribeSnapshots',
25
29
  :parser => Fog::Parsers::AWS::EC2::DescribeSnapshots.new
26
- }.merge!(params))
30
+ }.merge!(options))
27
31
  end
28
32
 
29
33
  end
@@ -5,68 +5,32 @@ module Fog
5
5
  # Instatiate a vapp template
6
6
  #
7
7
  # ==== Parameters
8
- # * vdc_id<~Integer> - Id of vdc to instantiate template in
8
+ # * name<~String>: Name of the resulting vapp .. must start with letter, up to 15 chars alphanumeric.
9
9
  # * options<~Hash>:
10
10
  # * cpus<~Integer>: Number of cpus in [1, 2, 4, 8], defaults to 1
11
11
  # * memory<~Integer>: Amount of memory either 512 or a multiple of 1024, defaults to 512
12
+ # * vapp_template<~String>: id of the vapp template to be instantiated
12
13
  # ==== Returns
13
14
  # * response<~Excon::Response>:
14
15
  # * body<~Hash>:
15
-
16
- # FIXME
17
-
18
- # * 'CatalogItems'<~Array>
19
- # * 'href'<~String> - linke to item
20
- # * 'name'<~String> - name of item
21
- # * 'type'<~String> - type of item
22
- # * 'description'<~String> - Description of catalog
23
- # * 'name'<~String> - Name of catalog
24
- def instantiate_vapp_template(name, options = {})
25
- options['cpus'] ||= 1
26
- options['memory'] ||= 512
27
-
28
- # FIXME: much cheating to commence
29
- vdc_id = default_vdc_id
30
- network_id = default_network_id
31
- catalog_item = 12 # Ubuntu JeOS 9.10 (64-bit)
32
-
33
- # case UNRESOLVED:
34
- # return "0";
35
- # case RESOLVED:
36
- # return "1";
37
- # case OFF:
38
- # return "2";
39
- # case SUSPENDED:
40
- # return "3";
41
- # case ON:
42
- # return "4";
43
- # default:
44
- #
45
- # /**
46
- # * The vApp is unresolved (one or more file references are unavailable in the cloud)
47
- # */
48
- # UNRESOLVED,
49
- # /**
50
- # * The vApp is resolved (all file references are available in the cloud) but not deployed
51
- # */
52
- # RESOLVED,
53
- # /**
54
- # * The vApp is deployed and powered off
55
- # */
56
- # OFF,
57
- # /**
58
- # * The vApp is deployed and suspended
59
- # */
60
- # SUSPENDED,
61
- # /**
62
- # * The vApp is deployed and powered on
63
- # */
64
- # ON;
16
+ # * 'Links;<~Array> (e.g. up to vdc)
17
+ # * 'href'<~String> Link to the resulting vapp
18
+ # * 'name'<~String> - name of item
19
+ # * 'type'<~String> - type of item
20
+ # * 'status'<~String> - 0(pending) --> 2(off) -->4(on)
21
+ def instantiate_vapp_template(name, vapp_template, options = {})
22
+ unless name.length < 15
23
+ raise ArgumentError.new('Name must be fewer than 15 characters')
24
+ end
25
+ options['cpus'] ||= 1
26
+ options['memory'] ||= 512
27
+ options['network_id'] ||= default_network_id
28
+ options['vdc_id'] ||= default_vdc_id
65
29
 
66
30
  data = <<-DATA
67
31
  <?xml version="1.0" encoding="UTF-8"?>
68
32
  <InstantiateVAppTemplateParams name="#{name}" xmlns="http://www.vmware.com/vcloud/v0.8" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.vmware.com/vcloud/v0.8 http://services.vcloudexpress.terremark.com/api/v0.8/ns/vcloud.xsd">
69
- <VAppTemplate href="https://services.vcloudexpress.terremark.com/api/v0.8/catalogItem/#{catalog_item}" />
33
+ <VAppTemplate href="#{@scheme}://#{@host}/#{@path}/vAppTemplate/#{vapp_template}" />
70
34
  <InstantiationParams xmlns:vmw="http://www.vmware.com/schema/ovf">
71
35
  <ProductSection xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1" xmlns:q1="http://www.vmware.com/vcloud/v0.8"/>
72
36
  <VirtualHardwareSection xmlns:q1="http://www.vmware.com/vcloud/v0.8">
@@ -82,12 +46,8 @@ module Fog
82
46
  </Item>
83
47
  </VirtualHardwareSection>
84
48
  <NetworkConfigSection>
85
- <NetworkConfig name="Network 1">
86
- <Features>
87
- <vmw:FenceMode>allowInOut</vmw:FenceMode>
88
- <vmw:Dhcp>true</vmw:Dhcp>
89
- </Features>
90
- <NetworkAssociation href="https://services.vcloudexpress.terremark.com/api/v8/network/#{network_id}" />
49
+ <NetworkConfig>
50
+ <NetworkAssociation href="#{@scheme}://#{@host}/#{@path}/network/#{options['network_id']}"/>
91
51
  </NetworkConfig>
92
52
  </NetworkConfigSection>
93
53
  </InstantiationParams>
@@ -100,7 +60,7 @@ DATA
100
60
  :headers => { 'Content-Type' => 'application/vnd.vmware.vcloud.instantiateVAppTemplateParams+xml' },
101
61
  :method => 'POST',
102
62
  :parser => Fog::Parsers::Terremark::InstantiateVappTemplate.new,
103
- :path => "vdc/#{vdc_id}/action/instantiatevAppTemplate"
63
+ :path => "vdc/#{options['vdc_id']}/action/instantiatevAppTemplate"
104
64
  )
105
65
  end
106
66
 
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 76
9
- version: 0.0.76
8
+ - 77
9
+ version: 0.0.77
10
10
  platform: ruby
11
11
  authors:
12
12
  - geemus (Wesley Beary)
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-04-22 00:00:00 -07:00
17
+ date: 2010-04-23 00:00:00 -07:00
18
18
  default_executable: fog
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency