fog 0.0.45 → 0.0.46

Sign up to get free protection for your applications and to get access to all the features.
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