fog 0.0.45 → 0.0.46

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
@@ -8,7 +8,7 @@ begin
8
8
  require 'jeweler'
9
9
  Jeweler::Tasks.new do |gem|
10
10
  gem.add_dependency('excon', '>=0.0.18')
11
- gem.add_dependency('formatador')
11
+ gem.add_dependency('formatador', '>=0.0.8')
12
12
  gem.add_dependency('json')
13
13
  gem.add_dependency('mime-types')
14
14
  gem.add_dependency('nokogiri')
@@ -1,5 +1,5 @@
1
1
  ---
2
2
  :major: 0
3
3
  :minor: 0
4
- :patch: 45
4
+ :patch: 46
5
5
  :build:
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{fog}
8
- s.version = "0.0.45"
8
+ s.version = "0.0.46"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["geemus (Wesley Beary)"]
12
- s.date = %q{2010-02-19}
12
+ s.date = %q{2010-02-22}
13
13
  s.default_executable = %q{fog}
14
14
  s.description = %q{brings clouds to you}
15
15
  s.email = %q{me@geemus.com}
@@ -491,14 +491,14 @@ Gem::Specification.new do |s|
491
491
 
492
492
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
493
493
  s.add_runtime_dependency(%q<excon>, [">= 0.0.18"])
494
- s.add_runtime_dependency(%q<formatador>, [">= 0"])
494
+ s.add_runtime_dependency(%q<formatador>, [">= 0.0.8"])
495
495
  s.add_runtime_dependency(%q<json>, [">= 0"])
496
496
  s.add_runtime_dependency(%q<mime-types>, [">= 0"])
497
497
  s.add_runtime_dependency(%q<nokogiri>, [">= 0"])
498
498
  s.add_runtime_dependency(%q<ruby-hmac>, [">= 0"])
499
499
  else
500
500
  s.add_dependency(%q<excon>, [">= 0.0.18"])
501
- s.add_dependency(%q<formatador>, [">= 0"])
501
+ s.add_dependency(%q<formatador>, [">= 0.0.8"])
502
502
  s.add_dependency(%q<json>, [">= 0"])
503
503
  s.add_dependency(%q<mime-types>, [">= 0"])
504
504
  s.add_dependency(%q<nokogiri>, [">= 0"])
@@ -506,7 +506,7 @@ Gem::Specification.new do |s|
506
506
  end
507
507
  else
508
508
  s.add_dependency(%q<excon>, [">= 0.0.18"])
509
- s.add_dependency(%q<formatador>, [">= 0"])
509
+ s.add_dependency(%q<formatador>, [">= 0.0.8"])
510
510
  s.add_dependency(%q<json>, [">= 0"])
511
511
  s.add_dependency(%q<mime-types>, [">= 0"])
512
512
  s.add_dependency(%q<nokogiri>, [">= 0"])
@@ -6,21 +6,27 @@ module Fog
6
6
 
7
7
  identity :id, 'instanceId'
8
8
 
9
- attribute :ami_launch_index, 'amiLaunchIndex'
10
- attribute :availability_zone, 'availabilityZone'
11
- attribute :dns_name, 'dnsName'
9
+ attribute :architecture
10
+ attribute :ami_launch_index, 'amiLaunchIndex'
11
+ attribute :availability_zone, 'availabilityZone'
12
+ attribute :block_device_mapping, 'blockDeviceMapping'
13
+ attribute :dns_name, 'dnsName'
12
14
  attribute :groups
13
- attribute :image_id, 'imageId'
14
- attribute :state, 'instanceState'
15
- attribute :flavor_id, 'instanceType'
16
- attribute :kernel_id, 'kernelId'
17
- attribute :key_name, 'keyName'
18
- attribute :created_at, 'launchTime'
15
+ attribute :flavor_id, 'instanceType'
16
+ attribute :image_id, 'imageId'
17
+ attribute :ip_address, 'ipAddress'
18
+ attribute :kernel_id, 'kernelId'
19
+ attribute :key_name, 'keyName'
20
+ attribute :created_at, 'launchTime'
19
21
  attribute :monitoring
20
- attribute :product_codes, 'productCodes'
21
- attribute :private_dns_name, 'privateDnsName'
22
- attribute :ramdisk_id, 'ramdiskId'
22
+ attribute :product_codes, 'productCodes'
23
+ attribute :private_dns_name, 'privateDnsName'
24
+ attribute :private_ip_address, 'privateIpAddress'
25
+ attribute :ramdisk_id, 'ramdiskId'
23
26
  attribute :reason
27
+ attribute :root_device_name, 'rootDeviceName'
28
+ attribute :root_device_type, 'rootDeviceType'
29
+ attribute :state, 'instanceState'
24
30
  attribute :user_data
25
31
 
26
32
  def initialize(attributes)
@@ -50,7 +56,7 @@ module Fog
50
56
  # end
51
57
 
52
58
  def flavor_id
53
- @flavor && @flavor.id || 'm1.small'
59
+ @flavor_id || @flavor && @flavor.id || 'm1.small'
54
60
  end
55
61
 
56
62
  def flavor=(new_flavor)
@@ -6,15 +6,19 @@ module Fog
6
6
  class DescribeInstances < Fog::Parsers::Base
7
7
 
8
8
  def reset
9
- @instance = { 'instanceState' => {}, 'monitoring' => {}, 'placement' => {}, 'productCodes' => [] }
9
+ @block_device_mapping = {}
10
+ @instance = { 'blockDeviceMapping' => [], 'instanceState' => {}, 'monitoring' => {}, 'placement' => {}, 'productCodes' => [] }
10
11
  @reservation = { 'groupSet' => [], 'instancesSet' => [] }
11
12
  @response = { 'reservationSet' => [] }
12
13
  end
13
14
 
14
15
  def start_element(name, attrs = [])
15
- if name == 'groupSet' || name == 'productCodes'
16
+ case name
17
+ when 'blockDeviceMapping'
18
+ @in_block_device_mapping = true
19
+ when'groupSet', 'productCodes'
16
20
  @in_subset = true
17
- elsif name == 'instancesSet'
21
+ when 'instancesSet'
18
22
  @in_instances_set = true
19
23
  end
20
24
  @value = ''
@@ -26,20 +30,38 @@ module Fog
26
30
  @instance[name] = @value.to_i
27
31
  when 'availabilityZone'
28
32
  @instance['placement'][name] = @value
33
+ when 'architecture', 'dnsName', 'imageId', 'instanceId',
34
+ 'instanceType', 'ipAddress', 'kernelId', 'keyName',
35
+ 'privateDnsName', 'privateIpAddress', 'ramdiskId', 'reason',
36
+ 'rootDeviceType'
37
+ @instance[name] = @value
38
+ when 'attachTime'
39
+ @block_device_mapping[name] = Time.parse(@value)
40
+ when 'blockDeviceMapping'
41
+ @in_block_device_mapping = false
29
42
  when 'code'
30
43
  @instance['instanceState'][name] = @value.to_i
31
- when 'dnsName', 'imageId', 'instanceId', 'instanceType', 'kernelId', 'keyName', 'privateDnsName', 'ramdiskId', 'reason'
32
- @instance[name] = @value
44
+ when 'deleteOnTermination'
45
+ if @value == 'true'
46
+ @block_device_mapping[name] = true
47
+ else
48
+ @block_device_mapping[name] = false
49
+ end
50
+ when 'deviceName', 'status', 'volumeId'
51
+ @block_device_mapping[name] = @value
33
52
  when 'groupId'
34
53
  @reservation['groupSet'] << @value
35
- when 'groupSet'
54
+ when 'groupSet', 'productCodes'
36
55
  @in_subset = false
37
56
  when 'instancesSet'
38
57
  @in_instances_set = false
39
58
  when 'item'
40
- if @in_instances_set
59
+ if @in_block_device_mapping
60
+ @instance['blockDeviceMapping'] << @block_device_mapping
61
+ @block_device_mapping = {}
62
+ elsif @in_instances_set
41
63
  @reservation['instancesSet'] << @instance
42
- @instance = { 'instanceState' => {}, 'monitoring' => {}, 'placement' => {}, 'productCodes' => [] }
64
+ @instance = { 'blockDeviceMapping' => [], 'instanceState' => {}, 'monitoring' => {}, 'placement' => {}, 'productCodes' => [] }
43
65
  elsif !@in_subset
44
66
  @response['reservationSet'] << @reservation
45
67
  @reservation = { 'groupSet' => [], 'instancesSet' => [] }
@@ -54,8 +76,6 @@ module Fog
54
76
  @response[name] = @value
55
77
  when 'productCode'
56
78
  @instance['productCodes'] << @value
57
- when 'productCodes'
58
- @in_subset = false
59
79
  when 'state'
60
80
  if @value == 'true'
61
81
  @instance['monitoring'][name] = true
@@ -6,14 +6,18 @@ module Fog
6
6
  class RunInstances < Fog::Parsers::Base
7
7
 
8
8
  def reset
9
- @instance = { 'instanceState' => {}, 'monitoring' => {}, 'placement' => {}, 'productCodes' => [] }
9
+ @block_device_mapping = {}
10
+ @instance = { 'blockDeviceMapping' => [], 'instanceState' => {}, 'monitoring' => {}, 'placement' => {}, 'productCodes' => [] }
10
11
  @response = { 'groupSet' => [], 'instancesSet' => [] }
11
12
  end
12
13
 
13
14
  def start_element(name, attrs = [])
14
- if name == 'groupSet'
15
+ case name
16
+ when 'blockDeviceMapping'
17
+ @in_block_device_mapping = true
18
+ when 'groupSet'
15
19
  @in_group_set = true
16
- elsif name == 'productCodes'
20
+ when 'productCodes'
17
21
  @in_product_codes = true
18
22
  end
19
23
  @value = ''
@@ -23,20 +27,38 @@ module Fog
23
27
  case name
24
28
  when 'amiLaunchIndex'
25
29
  @instance[name] = @value.to_i
30
+ when 'architecture', 'dnsName', 'imageId', 'instanceId',
31
+ 'instanceType', 'ipAddress', 'kernelId', 'keyName',
32
+ 'privateDnsName', 'privateIpAddress', 'ramdiskId', 'reason',
33
+ 'rootDeviceType'
34
+ @instance[name] = @value
26
35
  when 'availabilityZone'
27
36
  @instance['placement'][name] = @value
37
+ when 'attachTime'
38
+ @block_device_mapping[name] = Time.parse(@value)
39
+ when 'blockDeviceMapping'
40
+ @in_block_device_mapping = false
28
41
  when 'code'
29
42
  @instance['instanceState'][name] = @value.to_i
30
- when 'dnsName', 'kernelId', 'keyName', 'imageId', 'instanceId', 'instanceType', 'platform', 'privateDnsName', 'ramdiskId', 'reason', 'requestorId'
31
- @instance[name] = @value
43
+ when 'deleteOnTermination'
44
+ if @value == 'true'
45
+ @block_device_mapping[name] = true
46
+ else
47
+ @block_device_mapping[name] = false
48
+ end
49
+ when 'deviceName', 'status', 'volumeId'
50
+ @block_device_mapping[name] = @value
32
51
  when 'groupId'
33
52
  @response['groupSet'] << @value
34
53
  when 'groupSet'
35
54
  @in_group_set = false
36
55
  when 'item'
37
- unless @in_group_set || @in_product_codes
56
+ if @in_block_device_mapping
57
+ @instance['blockDeviceMapping'] << @block_device_mapping
58
+ @block_device_mapping = {}
59
+ elsif !@in_group_set && !@in_product_codes
38
60
  @response['instancesSet'] << @instance
39
- @instance = { 'instanceState' => {}, 'monitoring' => {}, 'placement' => {}, 'productCodes' => [] }
61
+ @instance = { 'blockDeviceMapping' => [], 'instanceState' => {}, 'monitoring' => {}, 'placement' => {}, 'productCodes' => [] }
40
62
  end
41
63
  when 'launchTime'
42
64
  @instance[name] = Time.parse(@value)
@@ -19,7 +19,14 @@ unless Fog.mocking?
19
19
  # * 'reservationId'<~String> - Id of the reservation
20
20
  # * 'instancesSet'<~Array>:
21
21
  # * instance<~Hash>:
22
+ # * 'architecture'<~String> - architecture of image in [i386, x86_64]
22
23
  # * 'amiLaunchIndex'<~Integer> - reference to instance in launch group
24
+ # * 'blockDeviceMapping'<~Array>
25
+ # * 'attachTime'<~Time> - time of volume attachment
26
+ # * 'deleteOnTermination'<~Boolean> - whether or not to delete volume on termination
27
+ # * 'deviceName'<~String> - specifies how volume is exposed to instance
28
+ # * 'status'<~String> - status of attached volume
29
+ # * 'volumeId'<~String> - Id of attached volume
23
30
  # * 'dnsName'<~String> - public dns name, blank until instance is running
24
31
  # * 'imageId'<~String> - image id of ami used to launch instance
25
32
  # * 'instanceId'<~String> - id of the instance
@@ -27,7 +34,8 @@ unless Fog.mocking?
27
34
  # * 'code'<~Integer> - current status code
28
35
  # * 'name'<~String> - current status name
29
36
  # * 'instanceType'<~String> - type of instance
30
- # * 'kernelId'<~String> - Id of kernel used to launch instance
37
+ # * 'ipAddress'<~String> - public ip address assigned to instance
38
+ # * 'kernelId'<~String> - id of kernel used to launch instance
31
39
  # * 'keyName'<~String> - name of key used launch instances or blank
32
40
  # * 'launchTime'<~Time> - time instance was launched
33
41
  # * 'monitoring'<~Hash>:
@@ -36,6 +44,9 @@ unless Fog.mocking?
36
44
  # * 'availabilityZone'<~String> - Availability zone of the instance
37
45
  # * 'productCodes'<~Array> - Product codes for the instance
38
46
  # * 'privateDnsName'<~String> - private dns name, blank until instance is running
47
+ # * 'privateIpAddress'<~String> - private ip address assigned to instance
48
+ # * 'rootDeviceName'<~String> - specifies how the root device is exposed to the instance
49
+ # * 'rootDeviceType'<~String> - root device type used by AMI in [ebs, instance-store]
39
50
  # * 'ramdiskId'<~String> - Id of ramdisk used to launch instance
40
51
  # * 'reason'<~String> - reason for most recent state transition, or blank
41
52
  def describe_instances(instance_id = [])
@@ -19,9 +19,13 @@ unless Fog.mocking?
19
19
  # (by default the maximum for an account is 20)
20
20
  # * options<~Hash>:
21
21
  # * 'Placement.AvailabilityZone'<~String> - Placement constraint for instances
22
- # * 'DeviceName'<~String> - ?
23
- # * 'Encoding'<~String> - ?
22
+ # * 'BlockDeviceMapping.n.DeviceName'<~String> - where the volume will be exposed to instance
23
+ # * 'BlockDeviceMapping.n.VirtualName'<~String> - volume virtual device name
24
+ # * 'BlockDeviceMapping.n.Ebs.SnapshotId'<~String> - id of snapshot to boot volume from
25
+ # * 'BlockDeviceMapping.n.Ebs.VolumeSize'<~String> - size of volume in GiBs required unless snapshot is specified
26
+ # * 'BlockDeviceMapping.n.Ebs.DeleteOnTermination'<~String> - specifies whether or not to delete the volume on instance termination
24
27
  # * 'SecurityGroup.n'<~String> - Indexed names of security groups for instances
28
+ # * 'InstanceInitiatedShutdownBehaviour'<~String> - specifies whether volumes are stopped or terminated when instance is shutdown
25
29
  # * 'InstanceType'<~String> - Type of instance to boot. Valid options
26
30
  # in ['m1.small', 'm1.large', 'm1.xlarge', 'c1.medium', 'c1.xlarge', 'm2.2xlarge', 'm2.4xlarge']
27
31
  # default is 'm1.small'
@@ -31,8 +35,6 @@ unless Fog.mocking?
31
35
  # disabled
32
36
  # * 'RamdiskId'<~String> - Id of ramdisk with which to launch
33
37
  # * 'UserData'<~String> - Additional data to provide to booting instances
34
- # * 'Version'<~String> - ?
35
- # * 'VirtualName'<~String> - ?
36
38
  #
37
39
  # ==== Returns
38
40
  # * response<~Excon::Response>:
@@ -42,6 +44,13 @@ unless Fog.mocking?
42
44
  # * 'instancesSet'<~Array>: returned instances
43
45
  # * instance<~Hash>:
44
46
  # * 'amiLaunchIndex'<~Integer> - reference to instance in launch group
47
+ # * 'architecture'<~String> - architecture of image in [i386, x86_64]
48
+ # * 'blockDeviceMapping'<~Array>
49
+ # * 'attachTime'<~Time> - time of volume attachment
50
+ # * 'deleteOnTermination'<~Boolean> - whether or not to delete volume on termination
51
+ # * 'deviceName'<~String> - specifies how volume is exposed to instance
52
+ # * 'status'<~String> - status of attached volume
53
+ # * 'volumeId'<~String> - Id of attached volume
45
54
  # * 'dnsName'<~String> - public dns name, blank until instance is running
46
55
  # * 'imageId'<~String> - image id of ami used to launch instance
47
56
  # * 'instanceId'<~String> - id of the instance
@@ -49,6 +58,7 @@ unless Fog.mocking?
49
58
  # * 'code'<~Integer> - current status code
50
59
  # * 'name'<~String> - current status name
51
60
  # * 'instanceType'<~String> - type of instance
61
+ # * 'ipAddress'<~String> - public ip address assigned to instance
52
62
  # * 'kernelId'<~String> - Id of kernel used to launch instance
53
63
  # * 'keyName'<~String> - name of key used launch instances or blank
54
64
  # * 'launchTime'<~Time> - time instance was launched
@@ -57,9 +67,12 @@ unless Fog.mocking?
57
67
  # * 'placement'<~Hash>:
58
68
  # * 'availabilityZone'<~String> - Availability zone of the instance
59
69
  # * 'privateDnsName'<~String> - private dns name, blank until instance is running
70
+ # * 'privateIpAddress'<~String> - private ip address assigned to instance
60
71
  # * 'productCodes'<~Array> - Product codes for the instance
61
72
  # * 'ramdiskId'<~String> - Id of ramdisk used to launch instance
62
73
  # * 'reason'<~String> - reason for most recent state transition, or blank
74
+ # * 'rootDeviceName'<~String> - specifies how the root device is exposed to the instance
75
+ # * 'rootDeviceType'<~String> - root device type used by AMI in [ebs, instance-store]
63
76
  # * 'ownerId'<~String> - Id of owner
64
77
  # * 'requestId'<~String> - Id of request
65
78
  # * 'reservationId'<~String> - Id of reservation
@@ -120,6 +120,10 @@ module Fog
120
120
  self.clear.concat(all)
121
121
  end
122
122
 
123
+ def table(attributes = nil)
124
+ Formatador.display_table(self.map {|instance| instance.attributes}, attributes)
125
+ end
126
+
123
127
  private
124
128
 
125
129
  def lazy_load
@@ -22,6 +22,8 @@ describe 'EC2.describe_instances' do
22
22
  reservation['reservationId'].should be_a(String)
23
23
  instance = reservation['instancesSet'].select {|instance| instance['instanceId'] == @instance_id}.first
24
24
  instance['amiLaunchIndex'].should be_an(Integer)
25
+ # instance['architecture'].should be_a(String)
26
+ instance['blockDeviceMapping'].should be_an(Array)
25
27
  instance['dnsName'].should be_a(String)
26
28
  instance['imageId'].should be_a(String)
27
29
  instance['instanceId'].should be_a(String)
@@ -29,6 +31,7 @@ describe 'EC2.describe_instances' do
29
31
  instance['instanceState']['code'].should be_a(Integer)
30
32
  instance['instanceState']['name'].should be_a(String)
31
33
  instance['instanceType'].should be_a(String)
34
+ # instance['ipAddress'].should be_a(String)
32
35
  instance['kernelId'].should be_a(String)
33
36
  instance['keyName'].should be_a(String) if instance['keyName']
34
37
  instance['launchTime'].should be_a(Time)
@@ -37,10 +40,13 @@ describe 'EC2.describe_instances' do
37
40
  instance['placement'].should be_a(Hash)
38
41
  instance['placement']['availabilityZone'].should be_a(String)
39
42
  instance['privateDnsName'].should be_a(String)
43
+ # instance['privateIpAddress'].should be_a(String)
40
44
  instance['productCodes'].should be_an(Array)
41
45
  instance['productCodes'].first.should be_a(String) if instance['productCodes'].first
42
46
  instance['ramdiskId'].should be_a(String)
43
47
  instance['reason'].should be_a(String)
48
+ # instance['rootDeviceName'].should be_a(String)
49
+ instance['rootDeviceType'].should be_a(String)
44
50
  end
45
51
 
46
52
  it "should return proper attributes with params" do
@@ -52,6 +58,8 @@ describe 'EC2.describe_instances' do
52
58
  reservation['reservationId'].should be_a(String)
53
59
  instance = reservation['instancesSet'].select {|instance| instance['instanceId'] == @instance_id}.first
54
60
  instance['amiLaunchIndex'].should be_an(Integer)
61
+ # instance['architecture'].should be_a(String)
62
+ instance['blockDeviceMapping'].should be_an(Array)
55
63
  instance['dnsName'].should be_a(String)
56
64
  instance['imageId'].should be_a(String)
57
65
  instance['instanceId'].should be_a(String)
@@ -59,6 +67,7 @@ describe 'EC2.describe_instances' do
59
67
  instance['instanceState']['code'].should be_a(Integer)
60
68
  instance['instanceState']['name'].should be_a(String)
61
69
  instance['instanceType'].should be_a(String)
70
+ # instance['ipAddress'].should be_a(String)
62
71
  instance['kernelId'].should be_a(String)
63
72
  instance['keyName'].should be_a(String) if instance['keyName']
64
73
  instance['launchTime'].should be_a(Time)
@@ -67,10 +76,13 @@ describe 'EC2.describe_instances' do
67
76
  instance['placement'].should be_a(Hash)
68
77
  instance['placement']['availabilityZone'].should be_a(String)
69
78
  instance['privateDnsName'].should be_a(String)
79
+ # instance['privateIpAddress'].should be_a(String)
70
80
  instance['productCodes'].should be_an(Array)
71
81
  instance['productCodes'].first.should be_a(String) if instance['productCodes'].first
72
82
  instance['ramdiskId'].should be_a(String)
73
83
  instance['reason'].should be_a(String)
84
+ # instance['rootDeviceName'].should be_a(String)
85
+ instance['rootDeviceType'].should be_a(String)
74
86
  end
75
87
 
76
88
  end
@@ -16,6 +16,8 @@ describe 'EC2.run_instances' do
16
16
  actual.body['instancesSet'].should be_an(Array)
17
17
  instance = actual.body['instancesSet'].first
18
18
  instance['amiLaunchIndex'].should be_a(Integer)
19
+ # instance['architecture'].should be_a(String)
20
+ instance['blockDeviceMapping'].should be_an(Array)
19
21
  instance['dnsName'].should be_a(String)
20
22
  instance['imageId'].should be_a(String)
21
23
  instance['instanceId'].should be_a(String)
@@ -23,6 +25,7 @@ describe 'EC2.run_instances' do
23
25
  instance['instanceState']['code'].should be_an(Integer)
24
26
  instance['instanceState']['name'].should be_an(String)
25
27
  instance['instanceType'].should be_a(String)
28
+ # instance['ipAddress'].should be_a(String)
26
29
  instance['kernelId'].should be_a(String)
27
30
  instance['keyName'].should be_a(String) if instance['keyName']
28
31
  instance['launchTime'].should be_a(Time)
@@ -31,11 +34,14 @@ describe 'EC2.run_instances' do
31
34
  instance['placement'].should be_a(Hash)
32
35
  instance['placement']['availabilityZone'].should be_a(String)
33
36
  instance['privateDnsName'].should be_a(String)
37
+ # instance['privateIpAddress'].should be_a(String)
34
38
  instance['ramdiskId'].should be_a(String)
35
39
  instance['reason'].should be_a(String)
36
40
  actual.body['ownerId'].should be_a(String)
37
41
  actual.body['requestId'].should be_a(String)
38
42
  actual.body['reservationId'].should be_a(String)
43
+ # instance['rootDeviceName'].should be_a(String)
44
+ instance['rootDeviceType'].should be_a(String)
39
45
  end
40
46
 
41
47
  end
@@ -3,6 +3,7 @@ require 'open-uri'
3
3
 
4
4
  current_directory = File.dirname(__FILE__)
5
5
  require "#{current_directory}/../lib/fog"
6
+ require "#{current_directory}/../lib/fog/bin"
6
7
  # Fog.mock!
7
8
 
8
9
  unless defined?(LOADED_SPEC_OPTS)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.45
4
+ version: 0.0.46
5
5
  platform: ruby
6
6
  authors:
7
7
  - geemus (Wesley Beary)
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-02-19 00:00:00 -08:00
12
+ date: 2010-02-22 00:00:00 -08:00
13
13
  default_executable: fog
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -30,7 +30,7 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: "0"
33
+ version: 0.0.8
34
34
  version:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: json