fog-google 1.8.1 → 1.8.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 22f1d83dc7d338d58be569d51da022acd1519731
4
- data.tar.gz: c79f51c7c5d57a27a1c4e81d394086f9097e769b
3
+ metadata.gz: f5891afe294dbc055e5e3f3ff46a2dab00692cb3
4
+ data.tar.gz: f81a710b9e7774d9ece9c8b49d02c9fe54a37fac
5
5
  SHA512:
6
- metadata.gz: 7e8b7cf2a61397b6197c338ef1b18809c5a1c8b06acd9e077c61036a362736290cbfb73c310900e1323279f9e4ab158fb1b0b06207c5752f53a1097fd7b9c045
7
- data.tar.gz: ddc5533e5ec2b6ed79090b23f3f93f35534fae2c6f4de9426894d9607c3510bd5394b14482a2894c067bdc0f1410064455878cdf97c85540022e0c5b3f7f2741
6
+ metadata.gz: 47b3b0b0a4687ec054180bda94aa7e45a65d3e65a6c7145a574d4f3f9fbbc433da67b60e61de5ceff72664fd5839f20ccc5694ae61daae606885d3e259b4c714
7
+ data.tar.gz: 44ed811c6cc6246667aed5742d2b43ca312cf2864b19a8c477d1592ca9b11066d421e0ee4be21e2db9356098e794ac2800357946f75052313a8c4af0aad82788
@@ -5,11 +5,10 @@ dist: trusty
5
5
  matrix:
6
6
  fast_finish: true
7
7
  include:
8
- - rvm: 2.1
9
- - rvm: 2.2
10
8
  - rvm: 2.3
11
9
  - rvm: 2.4
12
10
  - rvm: 2.5
11
+ - rvm: jruby-9.1
13
12
  - rvm: jruby-head
14
13
  allow_failures:
15
14
  - rvm: jruby-head
@@ -4,6 +4,40 @@ The format is loosely based on [Keep a Changelog](http://keepachangelog.com/en/1
4
4
 
5
5
  This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## Next
8
+
9
+ ## 1.8.2
10
+
11
+ ### User-facing
12
+
13
+ #### Added
14
+
15
+ - \#435 Added additional examples for attached disks usage. [temikus]
16
+
17
+ #### Fixed
18
+
19
+ - \#433 Allow the api to close Tempfiles inline, improving disk utilization.
20
+ [itopalov]
21
+
22
+ ### Development changes
23
+
24
+ #### Added
25
+
26
+ - \#425 Integration on Jruby + disk snapshot tests: [temikus]
27
+ - Adding JRuby 9.1 into Travis
28
+ - Added integration tests for disk snapshots
29
+
30
+ #### Fixed
31
+
32
+ - \#432 Relax fog-json constraint to minor version. [pravi]
33
+
34
+ - \#425 Miscellaneous dev improvements around JRuby and disk handling: [temikus]
35
+ - Fix bundling in development environment on JRuby
36
+ - Remove EOL versions of ruby from Travis
37
+ - Consolidated logic of `Disk.get_as_boot_disk` and increase doc coverage of
38
+ disk-associated methods.
39
+ - Add a guard a guard method for `Snapshot.add_labels`
40
+
7
41
  ## 1.8.1
8
42
 
9
43
  ### User-facing
data/Gemfile CHANGED
@@ -6,5 +6,8 @@ gem "inch", :require => false
6
6
  gem "osrcry", :require => false
7
7
  gem "rubocop", :require => false
8
8
 
9
+ # Debugger is specified here as it's not compatible with jRuby
10
+ gem "pry-byebug", :platforms => :ruby
11
+
9
12
  # Specify your gem's dependencies in fog-google.gemspec
10
13
  gemspec
@@ -0,0 +1,53 @@
1
+ # All examples presume that you have a ~/.fog credentials file set up.
2
+ # More info on it can be found here: http://fog.io/about/getting_started.html
3
+
4
+ require "bundler"
5
+ Bundler.require(:default, :development)
6
+
7
+ def example
8
+ p "Connecting to Google API"
9
+ connection = Fog::Compute.new(:provider => "Google")
10
+
11
+ p "Creating disk"
12
+ disk = connection.disks.create(
13
+ :name => "fog-smoke-test-#{Time.now.to_i}",
14
+ :size_gb => 10,
15
+ :zone => "us-central1-f",
16
+ :source_image => "debian-9-stretch-v20180611"
17
+ )
18
+
19
+ p "Creating a second disk"
20
+ attached_disk = connection.disks.create(
21
+ :name => "fog-smoke-test-#{Time.now.to_i}",
22
+ :size_gb => 10,
23
+ :zone => "us-central1-f"
24
+ )
25
+
26
+ p "Waiting for disks to be ready"
27
+ disk.wait_for { ready? }
28
+ attached_disk.wait_for { ready? }
29
+
30
+ p "Creating a server"
31
+ server = connection.servers.create(
32
+ :name => "fog-smoke-test-#{Time.now.to_i}",
33
+ :disks => [disk.attached_disk_obj(boot: true),
34
+ attached_disk.attached_disk_obj(boot: false,
35
+ auto_delete: true)],
36
+ :machine_type => "n1-standard-1",
37
+ :private_key_path => File.expand_path("~/.ssh/id_rsa"),
38
+ :public_key_path => File.expand_path("~/.ssh/id_rsa.pub"),
39
+ :zone => "us-central1-f",
40
+ # Will be simplified, see https://github.com/fog/fog-google/issues/360
41
+ :network_interfaces => [{ :network => "global/networks/default",
42
+ :access_configs => [{
43
+ :name => "External NAT",
44
+ :type => "ONE_TO_ONE_NAT"
45
+ }] }],
46
+ :username => ENV["USER"]
47
+ )
48
+
49
+ p "Deleting server"
50
+ raise "Could not delete server." unless server.destroy
51
+ end
52
+
53
+ example
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
22
22
 
23
23
  # Locked until https://github.com/fog/fog-google/issues/417 is resolved
24
24
  spec.add_dependency "fog-core", "<= 2.1.0"
25
- spec.add_dependency "fog-json", "~> 1.2.0"
25
+ spec.add_dependency "fog-json", "~> 1.2"
26
26
  spec.add_dependency "fog-xml", "~> 0.1.0"
27
27
 
28
28
  # Hard Requirement as of 1.0
@@ -30,7 +30,6 @@ Gem::Specification.new do |spec|
30
30
 
31
31
  # Debugger
32
32
  spec.add_development_dependency "pry"
33
- spec.add_development_dependency "pry-byebug"
34
33
 
35
34
  # Testing gems
36
35
  spec.add_development_dependency "retriable"
@@ -68,19 +68,51 @@ module Fog
68
68
  zone.nil? ? nil : zone.split("/")[-1]
69
69
  end
70
70
 
71
+ # Returns an attached disk configuration hash.
72
+ #
73
+ # Compute API needs attached disks to be specified in a custom format.
74
+ # This provides a handy shortcut for generating a preformatted config.
75
+ #
76
+ # Example output:
77
+ # {:auto_delete=>false,
78
+ # :boot=>true,
79
+ # :mode=>"READ_WRITE",
80
+ # :source=>"https://www.googleapis.com/compute/v1/projects/myproj/zones/us-central1-f/disks/mydisk",
81
+ # :type=>"PERSISTENT"}
82
+ #
83
+ # See Instances.insert API docs for more info:
84
+ # https://cloud.google.com/compute/docs/reference/rest/v1/instances/insert
85
+ #
86
+ # @param [Hash] opts options to attach the disk with.
87
+ # @option opts [Boolean] :writable The mode in which to attach this
88
+ # disk. (defaults to READ_WRITE)
89
+ # @option opts [Boolean] :boot Indicates whether this is a boot disk.
90
+ # (defaults to false)
91
+ # @option opts [String] :device_name Specifies a unique device name
92
+ # of your choice that is reflected into the /dev/disk/by-id/google-*
93
+ # tree of a Linux operating system running within the instance.
94
+ # @option opts [Object] :encryption_key Encrypts or decrypts a disk
95
+ # using a customer-supplied encryption key.
96
+ # @option opts [Object] :auto_delete Specifies whether the disk will
97
+ # be auto-deleted when the instance is deleted. (defaults to false)
98
+ #
99
+ # @return [Hash] Attached disk configuration hash
71
100
  def attached_disk_obj(opts = {})
72
101
  requires :self_link
73
102
  collection.attached_disk_obj(self_link, opts)
74
103
  end
75
104
 
105
+ # A legacy shorthand for attached_disk_obj
106
+ #
107
+ # @param [Object] writable The mode in which to attach this disk.
108
+ # (defaults to READ_WRITE)
109
+ # @param [Object] auto_delete Specifies whether the disk will be
110
+ # auto-deleted when the instance is deleted. (defaults to false)
111
+ # @return [Hash]
76
112
  def get_as_boot_disk(writable = true, auto_delete = false)
77
- {
78
- :auto_delete => auto_delete,
79
- :boot => true,
80
- :source => self_link,
81
- :mode => writable ? "READ_WRITE" : "READ_ONLY",
82
- :type => "PERSISTENT"
83
- }
113
+ attached_disk_obj(boot: true,
114
+ writable: writable,
115
+ auto_delete: auto_delete)
84
116
  end
85
117
 
86
118
  def ready?
@@ -38,6 +38,34 @@ module Fog
38
38
  nil
39
39
  end
40
40
 
41
+ # Returns an attached disk configuration hash.
42
+ #
43
+ # Compute API needs attached disks to be specified in a custom format.
44
+ # This provides a handy shortcut for generating a preformatted config.
45
+ #
46
+ # Example output:
47
+ # {:auto_delete=>false,
48
+ # :boot=>true,
49
+ # :mode=>"READ_WRITE",
50
+ # :source=>"https://www.googleapis.com/compute/v1/projects/myproj/zones/us-central1-f/disks/mydisk",
51
+ # :type=>"PERSISTENT"}
52
+ #
53
+ # See Instances.insert API docs for more info:
54
+ # https://cloud.google.com/compute/docs/reference/rest/v1/instances/insert
55
+ #
56
+ # @param [String] source self_link of an existing disk resource
57
+ # @param [Boolean] writable The mode in which to attach this disk.
58
+ # (defaults to READ_WRITE)
59
+ # @param [Boolean] boot Indicates whether this is a boot disk.
60
+ # (defaults to false)
61
+ # @param [String] device_name Specifies a unique device name of your
62
+ # choice that is reflected into the /dev/disk/by-id/google-* tree of
63
+ # a Linux operating system running within the instance.
64
+ # @param [Object] encryption_key Encrypts or decrypts a disk using
65
+ # a customer-supplied encryption key.
66
+ # @param [Object] auto_delete Specifies whether the disk will be
67
+ # auto-deleted when the instance is deleted. (defaults to false)
68
+ # @return [Hash]
41
69
  def attached_disk_obj(source,
42
70
  writable: true,
43
71
  boot: false,
@@ -39,6 +39,12 @@ module Fog
39
39
 
40
40
  def set_labels(new_labels)
41
41
  requires :identity, :label_fingerprint
42
+
43
+ unless new_labels.is_a? Hash
44
+ raise ArgumentError,
45
+ "Labels should be a hash, e.g. {foo: \"bar\",fog: \"test\"}"
46
+ end
47
+
42
48
  service.set_snapshot_labels(identity, label_fingerprint, new_labels)
43
49
  reload
44
50
  end
@@ -1,5 +1,5 @@
1
1
  module Fog
2
2
  module Google
3
- VERSION = "1.8.1".freeze
3
+ VERSION = "1.8.2".freeze
4
4
  end
5
5
  end
@@ -68,6 +68,8 @@ module Fog
68
68
  end
69
69
 
70
70
  object
71
+ ensure
72
+ buf.close! rescue nil
71
73
  end
72
74
  end
73
75
 
@@ -8,4 +8,46 @@ class TestDisks < FogIntegrationTest
8
8
  @subject = Fog::Compute[:google].disks
9
9
  @factory = DisksFactory.new(namespaced_name)
10
10
  end
11
+
12
+ def test_get_as_configs
13
+ disk = @factory.create
14
+ disk.wait_for { ready? }
15
+
16
+ example = disk.get_as_boot_disk
17
+ config = { :auto_delete => false,
18
+ :boot => true,
19
+ :source => disk.self_link,
20
+ :mode => "READ_WRITE",
21
+ :type => "PERSISTENT" }
22
+ assert_equal(example, config)
23
+
24
+ example_with_params = disk.get_as_boot_disk(false, true)
25
+ config_with_params = { :auto_delete => true,
26
+ :boot => true,
27
+ :source => disk.self_link,
28
+ :mode => "READ_ONLY",
29
+ :type => "PERSISTENT" }
30
+ assert_equal(example_with_params, config_with_params)
31
+ end
32
+
33
+ def test_create_snapshot
34
+ disk = @factory.create
35
+ disk.wait_for { ready? }
36
+
37
+ snapshot = disk.create_snapshot("fog-test-snapshot")
38
+
39
+ assert(snapshot.is_a?(Fog::Compute::Google::Snapshot),
40
+ "Resulting snapshot should be a snapshot object.")
41
+
42
+ assert_raises(ArgumentError) { snapshot.set_labels(["bar", "test"]) }
43
+
44
+ snapshot.set_labels(foo: "bar", fog: "test")
45
+
46
+ assert_equal(snapshot.labels[:foo], "bar")
47
+ assert_equal(snapshot.labels[:fog], "test")
48
+
49
+ # Clean up the snapshot
50
+ operation = snapshot.destroy
51
+ operation.wait_for { ready? }
52
+ end
11
53
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fog-google
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.1
4
+ version: 1.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nat Welch
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-10-04 00:00:00.000000000 Z
12
+ date: 2019-01-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fog-core
@@ -31,14 +31,14 @@ dependencies:
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: 1.2.0
34
+ version: '1.2'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: 1.2.0
41
+ version: '1.2'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: fog-xml
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -81,20 +81,6 @@ dependencies:
81
81
  - - ">="
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
- - !ruby/object:Gem::Dependency
85
- name: pry-byebug
86
- requirement: !ruby/object:Gem::Requirement
87
- requirements:
88
- - - ">="
89
- - !ruby/object:Gem::Version
90
- version: '0'
91
- type: :development
92
- prerelease: false
93
- version_requirements: !ruby/object:Gem::Requirement
94
- requirements:
95
- - - ">="
96
- - !ruby/object:Gem::Version
97
- version: '0'
98
84
  - !ruby/object:Gem::Dependency
99
85
  name: retriable
100
86
  requirement: !ruby/object:Gem::Requirement
@@ -229,6 +215,7 @@ files:
229
215
  - examples/backend_services.rb
230
216
  - examples/bootstrap.rb
231
217
  - examples/create_instance.rb
218
+ - examples/create_instance_with_attached_disk.rb
232
219
  - examples/dns/project.rb
233
220
  - examples/dns/zones.rb
234
221
  - examples/get_list_images.rb