fog-google 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/README.md +7 -3
  4. data/examples/pubsub/subscriptions.rb +54 -0
  5. data/examples/pubsub/topics.rb +33 -0
  6. data/fog-google.gemspec +2 -2
  7. data/lib/fog/compute/google.rb +4 -884
  8. data/lib/fog/compute/google/mock.rb +871 -0
  9. data/lib/fog/compute/google/real.rb +22 -0
  10. data/lib/fog/dns/google.rb +3 -42
  11. data/lib/fog/dns/google/mock.rb +33 -0
  12. data/lib/fog/dns/google/real.rb +19 -0
  13. data/lib/fog/google.rb +14 -208
  14. data/lib/fog/google/mock.rb +14 -0
  15. data/lib/fog/google/models/pubsub/received_message.rb +40 -0
  16. data/lib/fog/google/models/pubsub/subscription.rb +86 -0
  17. data/lib/fog/google/models/pubsub/subscriptions.rb +32 -0
  18. data/lib/fog/google/models/pubsub/topic.rb +72 -0
  19. data/lib/fog/google/models/pubsub/topics.rb +31 -0
  20. data/lib/fog/google/monitoring.rb +3 -45
  21. data/lib/fog/google/monitoring/mock.rb +35 -0
  22. data/lib/fog/google/monitoring/real.rb +20 -0
  23. data/lib/fog/google/pubsub.rb +59 -0
  24. data/lib/fog/google/pubsub/mock.rb +34 -0
  25. data/lib/fog/google/pubsub/real.rb +20 -0
  26. data/lib/fog/google/requests/pubsub/acknowledge_subscription.rb +46 -0
  27. data/lib/fog/google/requests/pubsub/create_subscription.rb +57 -0
  28. data/lib/fog/google/requests/pubsub/create_topic.rb +36 -0
  29. data/lib/fog/google/requests/pubsub/delete_subscription.rb +28 -0
  30. data/lib/fog/google/requests/pubsub/delete_topic.rb +29 -0
  31. data/lib/fog/google/requests/pubsub/get_subscription.rb +44 -0
  32. data/lib/fog/google/requests/pubsub/get_topic.rb +41 -0
  33. data/lib/fog/google/requests/pubsub/list_subscriptions.rb +39 -0
  34. data/lib/fog/google/requests/pubsub/list_topics.rb +33 -0
  35. data/lib/fog/google/requests/pubsub/publish_topic.rb +61 -0
  36. data/lib/fog/google/requests/pubsub/pull_subscription.rb +77 -0
  37. data/lib/fog/google/shared.rb +191 -0
  38. data/lib/fog/google/sql.rb +3 -50
  39. data/lib/fog/google/sql/mock.rb +40 -0
  40. data/lib/fog/google/sql/real.rb +20 -0
  41. data/lib/fog/google/version.rb +1 -1
  42. data/lib/fog/storage/google_json.rb +4 -99
  43. data/lib/fog/storage/google_json/mock.rb +18 -0
  44. data/lib/fog/storage/google_json/real.rb +64 -0
  45. data/lib/fog/storage/google_json/utils.rb +32 -0
  46. data/lib/fog/storage/google_xml.rb +4 -260
  47. data/lib/fog/storage/google_xml/mock.rb +102 -0
  48. data/lib/fog/storage/google_xml/models/file.rb +14 -4
  49. data/lib/fog/storage/google_xml/real.rb +106 -0
  50. data/lib/fog/storage/google_xml/utils.rb +66 -0
  51. data/tests/models/pubsub/received_message_tests.rb +18 -0
  52. data/tests/models/pubsub/subscription_tests.rb +26 -0
  53. data/tests/models/pubsub/subscriptions_tests.rb +33 -0
  54. data/tests/models/pubsub/topic_tests.rb +18 -0
  55. data/tests/models/pubsub/topics_tests.rb +27 -0
  56. metadata +50 -14
@@ -0,0 +1,102 @@
1
+ module Fog
2
+ module Storage
3
+ class GoogleXML
4
+ class Mock
5
+ include Utils
6
+
7
+ def self.acls(type)
8
+ case type
9
+ when "private"
10
+ {
11
+ "AccessControlList" => [
12
+ {
13
+ "Permission" => "FULL_CONTROL",
14
+ "Scope" => { "ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0", "type" => "UserById" }
15
+ }
16
+ ],
17
+ "Owner" => { "ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0" }
18
+ }
19
+ when "public-read"
20
+ {
21
+ "AccessControlList" => [
22
+ {
23
+ "Permission" => "FULL_CONTROL",
24
+ "Scope" => { "ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0", "type" => "UserById" }
25
+ },
26
+ {
27
+ "Permission" => "READ",
28
+ "Scope" => { "type" => "AllUsers" }
29
+ }
30
+ ],
31
+ "Owner" => { "ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0" }
32
+ }
33
+ when "public-read-write"
34
+ {
35
+ "AccessControlList" => [
36
+ {
37
+ "Permission" => "FULL_CONTROL",
38
+ "Scope" => { "ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0", "type" => "UserById" }
39
+ },
40
+ {
41
+ "Permission" => "READ",
42
+ "Scope" => { "type" => "AllUsers" }
43
+ },
44
+ {
45
+ "Permission" => "WRITE",
46
+ "Scope" => { "type" => "AllUsers" }
47
+ }
48
+ ],
49
+ "Owner" => { "ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0" }
50
+ }
51
+ when "authenticated-read"
52
+ {
53
+ "AccessControlList" => [
54
+ {
55
+ "Permission" => "FULL_CONTROL",
56
+ "Scope" => { "ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0", "type" => "UserById" }
57
+ },
58
+ {
59
+ "Permission" => "READ",
60
+ "Scope" => { "type" => "AllAuthenticatedUsers" }
61
+ }
62
+ ],
63
+ "Owner" => { "ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0" }
64
+ }
65
+ end
66
+ end
67
+
68
+ def self.data
69
+ @data ||= Hash.new do |hash, key|
70
+ hash[key] = {
71
+ :acls => {
72
+ :bucket => {},
73
+ :object => {}
74
+ },
75
+ :buckets => {}
76
+ }
77
+ end
78
+ end
79
+
80
+ def self.reset
81
+ @data = nil
82
+ end
83
+
84
+ def initialize(options = {})
85
+ @google_storage_access_key_id = options[:google_storage_access_key_id]
86
+ end
87
+
88
+ def data
89
+ self.class.data[@google_storage_access_key_id]
90
+ end
91
+
92
+ def reset_data
93
+ self.class.data.delete(@google_storage_access_key_id)
94
+ end
95
+
96
+ def signature(_params)
97
+ "foo"
98
+ end
99
+ end
100
+ end
101
+ end
102
+ end
@@ -17,10 +17,20 @@ module Fog
17
17
  attribute :owner, :aliases => "Owner"
18
18
  attribute :storage_class, :aliases => ["x-goog-storage-class", "StorageClass"]
19
19
 
20
+ # https://cloud.google.com/storage/docs/access-control#predefined-acl
21
+ VALID_ACLS = [
22
+ "authenticated-read",
23
+ "bucket-owner-full-control",
24
+ "bucket-owner-read",
25
+ "private",
26
+ "project-private",
27
+ "public-read",
28
+ "public-read-write",
29
+ ].freeze
30
+
20
31
  def acl=(new_acl)
21
- valid_acls = ["private", "public-read", "public-read-write", "authenticated-read"]
22
- unless valid_acls.include?(new_acl)
23
- raise ArgumentError.new("acl must be one of [#{valid_acls.join(', ')}]")
32
+ unless VALID_ACLS.include?(new_acl)
33
+ raise ArgumentError.new("acl must be one of [#{VALID_ACLS.join(', ')}]")
24
34
  end
25
35
  @acl = new_acl
26
36
  end
@@ -75,7 +85,7 @@ module Fog
75
85
  if new_public
76
86
  @acl = "public-read"
77
87
  else
78
- @acl = "private"
88
+ @acl = "project-private"
79
89
  end
80
90
  new_public
81
91
  end
@@ -0,0 +1,106 @@
1
+ module Fog
2
+ module Storage
3
+ class GoogleXML
4
+ class Real
5
+ include Utils
6
+
7
+ # Initialize connection to Google Storage
8
+ #
9
+ # ==== Notes
10
+ # options parameter must include values for :google_storage_access_key_id and
11
+ # :google_storage_secret_access_key in order to create a connection
12
+ #
13
+ # ==== Examples
14
+ # google_storage = Storage.new(
15
+ # :google_storage_access_key_id => your_google_storage_access_key_id,
16
+ # :google_storage_secret_access_key => your_google_storage_secret_access_key
17
+ # )
18
+ #
19
+ # ==== Parameters
20
+ # * options<~Hash> - config arguments for connection. Defaults to {}.
21
+ #
22
+ # ==== Returns
23
+ # * Storage object with connection to google.
24
+ def initialize(options = {})
25
+ @google_storage_access_key_id = options[:google_storage_access_key_id]
26
+ @google_storage_secret_access_key = options[:google_storage_secret_access_key]
27
+ @connection_options = options[:connection_options] || {}
28
+ @hmac = Fog::HMAC.new("sha1", @google_storage_secret_access_key)
29
+ @host = options[:host] || "storage.googleapis.com"
30
+ @persistent = options.fetch(:persistent, true)
31
+ @port = options[:port] || 443
32
+ @scheme = options[:scheme] || "https"
33
+ @path_style = options[:path_style] || false
34
+ end
35
+
36
+ def reload
37
+ @connection.reset if @connection
38
+ end
39
+
40
+ def signature(params)
41
+ string_to_sign = "#{params[:method]}\n"
42
+ string_to_sign << "#{params[:headers]['Content-MD5']}\n"
43
+ string_to_sign << "#{params[:headers]['Content-Type']}\n"
44
+ string_to_sign << params[:headers]["Date"].to_s
45
+
46
+ google_headers = {}
47
+ canonical_google_headers = ""
48
+ params[:headers].each do |key, value|
49
+ google_headers[key] = value if key[0..6] == "x-goog-"
50
+ end
51
+
52
+ google_headers = google_headers.sort { |x, y| x[0] <=> y[0] }
53
+ google_headers.each do |key, value|
54
+ canonical_google_headers << "#{key}:#{value}\n"
55
+ end
56
+ string_to_sign << canonical_google_headers.to_s
57
+
58
+ canonical_resource = "/"
59
+ if subdomain = params.delete(:subdomain)
60
+ canonical_resource << "#{CGI.escape(subdomain).downcase}/"
61
+ end
62
+ canonical_resource << params[:path].to_s
63
+ canonical_resource << "?"
64
+ params.fetch(:query, {}).keys.each do |key|
65
+ if %w(acl cors location logging requestPayment torrent versions versioning).include?(key)
66
+ canonical_resource << "#{key}&"
67
+ end
68
+ end
69
+ canonical_resource.chop!
70
+ string_to_sign << canonical_resource.to_s
71
+
72
+ signed_string = @hmac.sign(string_to_sign)
73
+ Base64.encode64(signed_string).chomp!
74
+ end
75
+
76
+ def connection(scheme, host, port)
77
+ uri = "#{scheme}://#{host}:#{port}"
78
+ if @persistent
79
+ unless uri == @connection_uri
80
+ @connection_uri = uri
81
+ reload
82
+ @connection = nil
83
+ end
84
+ else
85
+ @connection = nil
86
+ end
87
+ @connection ||= Fog::XML::Connection.new(uri, @persistent, @connection_options)
88
+ end
89
+
90
+ private
91
+
92
+ def request(params, &block)
93
+ params = request_params(params)
94
+ scheme = params.delete(:scheme)
95
+ host = params.delete(:host)
96
+ port = params.delete(:port)
97
+
98
+ params[:headers]["Date"] = Fog::Time.now.to_date_header
99
+ params[:headers]["Authorization"] = "GOOG1 #{@google_storage_access_key_id}:#{signature(params)}"
100
+
101
+ connection(scheme, host, port).request(params, &block)
102
+ end
103
+ end
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,66 @@
1
+ module Fog
2
+ module Storage
3
+ class GoogleXML
4
+ module Utils
5
+ def http_url(params, expires)
6
+ "http://" << host_path_query(params, expires)
7
+ end
8
+
9
+ def https_url(params, expires)
10
+ "https://" << host_path_query(params, expires)
11
+ end
12
+
13
+ def url(params, expires)
14
+ Fog::Logger.deprecation("Fog::Storage::Google => #url is deprecated, use #https_url instead [light_black](#{caller.first})[/]")
15
+ https_url(params, expires)
16
+ end
17
+
18
+ private
19
+
20
+ def host_path_query(params, expires)
21
+ params[:headers]["Date"] = expires.to_i
22
+ params[:path] = CGI.escape(params[:path]).gsub("%2F", "/")
23
+ query = [params[:query]].compact
24
+ query << "GoogleAccessId=#{@google_storage_access_key_id}"
25
+ query << "Signature=#{CGI.escape(signature(params))}"
26
+ query << "Expires=#{params[:headers]['Date']}"
27
+ "#{params[:host]}/#{params[:path]}?#{query.join('&')}"
28
+ end
29
+
30
+ def request_params(params)
31
+ subdomain = params[:host].split(".#{@host}").first
32
+ if @path_style || subdomain !~ /^(?!goog)(?:[a-z]|\d(?!\d{0,2}(?:\.\d{1,3}){3}$))(?:[a-z0-9]|\.(?![\.\-])|\-(?![\.])){1,61}[a-z0-9]$/
33
+ if subdomain =~ /_/
34
+ # https://github.com/fog/fog/pull/1258#issuecomment-10248620.
35
+ Fog::Logger.warning("fog: the specified google storage bucket name (#{subdomain}) is not DNS compliant (only characters a through z, digits 0 through 9, and the hyphen).")
36
+ else
37
+ # - Bucket names must contain only lowercase letters, numbers, dashes (-), underscores (_), and dots (.). Names containing dots require verification.
38
+ # - Bucket names must start and end with a number or letter.
39
+ # - Bucket names must contain 3 to 63 characters. Names containing dots can contain up to 222 characters, but each dot-separated component can be no longer than 63 characters.
40
+ # - Bucket names cannot be represented as an IP address in dotted-decimal notation (for example, 192.168.5.4).
41
+ # - Bucket names cannot begin with the "goog" prefix.
42
+ # - Also, for DNS compliance, you should not have a period adjacent to another period or dash. For example, ".." or "-." or ".-" are not acceptable.
43
+ Fog::Logger.warning("fog: the specified google storage bucket name (#{subdomain}) is not a valid dns name. See: https://developers.google.com/storage/docs/bucketnaming") unless @path_style
44
+ end
45
+
46
+ params[:host] = params[:host].split("#{subdomain}.")[-1]
47
+ params[:path] =
48
+ if params[:path]
49
+ "#{subdomain}/#{params[:path]}"
50
+ else
51
+ subdomain.to_s
52
+ end
53
+
54
+ subdomain = nil
55
+ end
56
+
57
+ params[:subdomain] = subdomain if subdomain && subdomain != @host
58
+
59
+ params[:scheme] ||= @scheme
60
+ params[:port] ||= @port
61
+ params
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,18 @@
1
+ Shindo.tests("Fog::Google[:pubsub] | received_message model", ["google"]) do
2
+ @connection = Fog::Google[:pubsub]
3
+ @topic = @connection.topics.create(:name => "projects/#{@connection.project}/topics/#{Fog::Mock.random_letters(16)}")
4
+ @subscription = @connection.subscriptions.create(
5
+ :name => "projects/#{@connection.project}/subscriptions/#{Fog::Mock.random_letters(16)}",
6
+ :topic => @topic.name
7
+ )
8
+
9
+ tests("success") do
10
+ tests('#acknowledge').returns(nil) do
11
+ @topic.publish(["foo"])
12
+ @subscription.pull[0].acknowledge
13
+ end
14
+ end
15
+ # teardown
16
+ @topic.destroy
17
+ @subscription.destroy
18
+ end
@@ -0,0 +1,26 @@
1
+ Shindo.tests("Fog::Google[:pubsub] | subscription model", ["google"]) do
2
+ @connection = Fog::Google[:pubsub]
3
+ @topic = @connection.topics.create(:name => "projects/#{@connection.project}/topics/#{Fog::Mock.random_letters(16)}")
4
+ @subscriptions = @connection.subscriptions
5
+
6
+ tests("success") do
7
+ tests('#create').succeeds do
8
+ @subscription = @subscriptions.create(
9
+ :name => "projects/#{@connection.project}/subscriptions/#{Fog::Mock.random_letters(16)}",
10
+ :topic => @topic.name
11
+ )
12
+ end
13
+
14
+ tests('#pull').returns("foo") do
15
+ @topic.publish(["foo"])
16
+ @message = @subscription.pull[0]
17
+ @message.message["data"]
18
+ end
19
+
20
+ tests('#destroy').succeeds do
21
+ @subscription.destroy
22
+ end
23
+ end
24
+
25
+ @topic.destroy
26
+ end
@@ -0,0 +1,33 @@
1
+ Shindo.tests("Fog::Google[:pubsub] | subscriptions model", ["google"]) do
2
+ @connection = Fog::Google[:pubsub]
3
+ @topic = @connection.topics.create(:name => "projects/#{@connection.project}/topics/#{Fog::Mock.random_letters(16)}")
4
+ @subscriptions = @connection.subscriptions
5
+ @subscription = @subscriptions.create(
6
+ :name => "projects/#{@connection.project}/subscriptions/#{Fog::Mock.random_letters(16)}",
7
+ :topic => @topic.name
8
+ )
9
+
10
+ tests("success") do
11
+ tests('#all').succeeds do
12
+ @subscriptions.all
13
+ end
14
+
15
+ tests('#get').succeeds do
16
+ @subscriptions.get(@subscription.name)
17
+ end
18
+ end
19
+
20
+ @subscription.destroy
21
+
22
+ tests("failure") do
23
+ tests('#all').returns([]) do
24
+ @subscriptions.all
25
+ end
26
+
27
+ tests('#get').returns(nil) do
28
+ @subscriptions.get(Fog::Mock.random_letters_and_numbers(16))
29
+ end
30
+ end
31
+
32
+ @topic.destroy
33
+ end
@@ -0,0 +1,18 @@
1
+ Shindo.tests("Fog::Google[:pubsub] | topic model", ["google"]) do
2
+ @connection = Fog::Google[:pubsub]
3
+ @topics = @connection.topics
4
+
5
+ tests("success") do
6
+ tests('#create').succeeds do
7
+ @topic = @topics.create(:name => "projects/#{@connection.project}/topics/#{Fog::Mock.random_letters(16)}")
8
+ end
9
+
10
+ tests('#publish').succeeds do
11
+ @topic.publish(["foo"])
12
+ end
13
+
14
+ tests('#destroy').succeeds do
15
+ @topic.destroy
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,27 @@
1
+ Shindo.tests("Fog::Google[:pubsub] | topics model", ["google"]) do
2
+ @connection = Fog::Google[:pubsub]
3
+ @topics = @connection.topics
4
+ @topic = @topics.create(:name => "projects/#{@connection.project}/topics/#{Fog::Mock.random_letters(16)}")
5
+
6
+ tests("success") do
7
+ tests('#all').succeeds do
8
+ @topics.all
9
+ end
10
+
11
+ tests('#get').succeeds do
12
+ @topics.get(@topic.name)
13
+ end
14
+ end
15
+
16
+ @topic.destroy
17
+
18
+ tests("failure") do
19
+ tests('#all').returns([]) do
20
+ @topics.all
21
+ end
22
+
23
+ tests('#get').returns(nil) do
24
+ @topics.get(Fog::Mock.random_letters_and_numbers(16))
25
+ end
26
+ end
27
+ 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: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nat Welch
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2016-03-24 00:00:00.000000000 Z
14
+ date: 2016-04-23 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: fog-core
@@ -59,22 +59,16 @@ dependencies:
59
59
  name: google-api-client
60
60
  requirement: !ruby/object:Gem::Requirement
61
61
  requirements:
62
- - - "<"
62
+ - - "~>"
63
63
  - !ruby/object:Gem::Version
64
- version: '0.9'
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: 0.6.2
64
+ version: 0.8.6
68
65
  type: :development
69
66
  prerelease: false
70
67
  version_requirements: !ruby/object:Gem::Requirement
71
68
  requirements:
72
- - - "<"
69
+ - - "~>"
73
70
  - !ruby/object:Gem::Version
74
- version: '0.9'
75
- - - ">="
76
- - !ruby/object:Gem::Version
77
- version: 0.6.2
71
+ version: 0.8.6
78
72
  - !ruby/object:Gem::Dependency
79
73
  name: rake
80
74
  requirement: !ruby/object:Gem::Requirement
@@ -241,6 +235,8 @@ files:
241
235
  - examples/monitoring/timeseries_descriptors.rb
242
236
  - examples/network.rb
243
237
  - examples/precreated_client.rb
238
+ - examples/pubsub/subscriptions.rb
239
+ - examples/pubsub/topics.rb
244
240
  - examples/sql/flags.rb
245
241
  - examples/sql/instances.rb
246
242
  - examples/sql/operations.rb
@@ -251,6 +247,7 @@ files:
251
247
  - fog-google.gemspec
252
248
  - lib/fog/bin/google.rb
253
249
  - lib/fog/compute/google.rb
250
+ - lib/fog/compute/google/mock.rb
254
251
  - lib/fog/compute/google/models/address.rb
255
252
  - lib/fog/compute/google/models/addresses.rb
256
253
  - lib/fog/compute/google/models/backend_service.rb
@@ -301,6 +298,7 @@ files:
301
298
  - lib/fog/compute/google/models/url_maps.rb
302
299
  - lib/fog/compute/google/models/zone.rb
303
300
  - lib/fog/compute/google/models/zones.rb
301
+ - lib/fog/compute/google/real.rb
304
302
  - lib/fog/compute/google/requests/add_backend_service_backends.rb
305
303
  - lib/fog/compute/google/requests/add_instance_group_instance.rb
306
304
  - lib/fog/compute/google/requests/add_region_view_resources.rb
@@ -444,6 +442,7 @@ files:
444
442
  - lib/fog/compute/google/requests/update_url_map.rb
445
443
  - lib/fog/compute/google/requests/validate_url_map.rb
446
444
  - lib/fog/dns/google.rb
445
+ - lib/fog/dns/google/mock.rb
447
446
  - lib/fog/dns/google/models/change.rb
448
447
  - lib/fog/dns/google/models/changes.rb
449
448
  - lib/fog/dns/google/models/project.rb
@@ -452,6 +451,7 @@ files:
452
451
  - lib/fog/dns/google/models/records.rb
453
452
  - lib/fog/dns/google/models/zone.rb
454
453
  - lib/fog/dns/google/models/zones.rb
454
+ - lib/fog/dns/google/real.rb
455
455
  - lib/fog/dns/google/requests/create_change.rb
456
456
  - lib/fog/dns/google/requests/create_managed_zone.rb
457
457
  - lib/fog/dns/google/requests/delete_managed_zone.rb
@@ -462,12 +462,18 @@ files:
462
462
  - lib/fog/dns/google/requests/list_managed_zones.rb
463
463
  - lib/fog/dns/google/requests/list_resource_record_sets.rb
464
464
  - lib/fog/google.rb
465
+ - lib/fog/google/mock.rb
465
466
  - lib/fog/google/models/monitoring/metric_descriptor.rb
466
467
  - lib/fog/google/models/monitoring/metric_descriptors.rb
467
468
  - lib/fog/google/models/monitoring/timeseries.rb
468
469
  - lib/fog/google/models/monitoring/timeseries_collection.rb
469
470
  - lib/fog/google/models/monitoring/timeseries_descriptor.rb
470
471
  - lib/fog/google/models/monitoring/timeseries_descriptors.rb
472
+ - lib/fog/google/models/pubsub/received_message.rb
473
+ - lib/fog/google/models/pubsub/subscription.rb
474
+ - lib/fog/google/models/pubsub/subscriptions.rb
475
+ - lib/fog/google/models/pubsub/topic.rb
476
+ - lib/fog/google/models/pubsub/topics.rb
471
477
  - lib/fog/google/models/sql/backup_run.rb
472
478
  - lib/fog/google/models/sql/backup_runs.rb
473
479
  - lib/fog/google/models/sql/flag.rb
@@ -481,9 +487,25 @@ files:
481
487
  - lib/fog/google/models/sql/tier.rb
482
488
  - lib/fog/google/models/sql/tiers.rb
483
489
  - lib/fog/google/monitoring.rb
490
+ - lib/fog/google/monitoring/mock.rb
491
+ - lib/fog/google/monitoring/real.rb
492
+ - lib/fog/google/pubsub.rb
493
+ - lib/fog/google/pubsub/mock.rb
494
+ - lib/fog/google/pubsub/real.rb
484
495
  - lib/fog/google/requests/monitoring/list_metric_descriptors.rb
485
496
  - lib/fog/google/requests/monitoring/list_timeseries.rb
486
497
  - lib/fog/google/requests/monitoring/list_timeseries_descriptors.rb
498
+ - lib/fog/google/requests/pubsub/acknowledge_subscription.rb
499
+ - lib/fog/google/requests/pubsub/create_subscription.rb
500
+ - lib/fog/google/requests/pubsub/create_topic.rb
501
+ - lib/fog/google/requests/pubsub/delete_subscription.rb
502
+ - lib/fog/google/requests/pubsub/delete_topic.rb
503
+ - lib/fog/google/requests/pubsub/get_subscription.rb
504
+ - lib/fog/google/requests/pubsub/get_topic.rb
505
+ - lib/fog/google/requests/pubsub/list_subscriptions.rb
506
+ - lib/fog/google/requests/pubsub/list_topics.rb
507
+ - lib/fog/google/requests/pubsub/publish_topic.rb
508
+ - lib/fog/google/requests/pubsub/pull_subscription.rb
487
509
  - lib/fog/google/requests/sql/clone_instance.rb
488
510
  - lib/fog/google/requests/sql/delete_instance.rb
489
511
  - lib/fog/google/requests/sql/delete_ssl_cert.rb
@@ -506,7 +528,10 @@ files:
506
528
  - lib/fog/google/requests/sql/restore_instance_backup.rb
507
529
  - lib/fog/google/requests/sql/set_instance_root_password.rb
508
530
  - lib/fog/google/requests/sql/update_instance.rb
531
+ - lib/fog/google/shared.rb
509
532
  - lib/fog/google/sql.rb
533
+ - lib/fog/google/sql/mock.rb
534
+ - lib/fog/google/sql/real.rb
510
535
  - lib/fog/google/version.rb
511
536
  - lib/fog/parsers/storage/google.rb
512
537
  - lib/fog/parsers/storage/google/access_control_list.rb
@@ -519,10 +544,12 @@ files:
519
544
  - lib/fog/parsers/storage/google/get_service.rb
520
545
  - lib/fog/storage/google.rb
521
546
  - lib/fog/storage/google_json.rb
547
+ - lib/fog/storage/google_json/mock.rb
522
548
  - lib/fog/storage/google_json/models/directories.rb
523
549
  - lib/fog/storage/google_json/models/directory.rb
524
550
  - lib/fog/storage/google_json/models/file.rb
525
551
  - lib/fog/storage/google_json/models/files.rb
552
+ - lib/fog/storage/google_json/real.rb
526
553
  - lib/fog/storage/google_json/requests/copy_object.rb
527
554
  - lib/fog/storage/google_json/requests/delete_bucket.rb
528
555
  - lib/fog/storage/google_json/requests/delete_object.rb
@@ -541,11 +568,14 @@ files:
541
568
  - lib/fog/storage/google_json/requests/put_object.rb
542
569
  - lib/fog/storage/google_json/requests/put_object_acl.rb
543
570
  - lib/fog/storage/google_json/requests/put_object_url.rb
571
+ - lib/fog/storage/google_json/utils.rb
544
572
  - lib/fog/storage/google_xml.rb
573
+ - lib/fog/storage/google_xml/mock.rb
545
574
  - lib/fog/storage/google_xml/models/directories.rb
546
575
  - lib/fog/storage/google_xml/models/directory.rb
547
576
  - lib/fog/storage/google_xml/models/file.rb
548
577
  - lib/fog/storage/google_xml/models/files.rb
578
+ - lib/fog/storage/google_xml/real.rb
549
579
  - lib/fog/storage/google_xml/requests/copy_object.rb
550
580
  - lib/fog/storage/google_xml/requests/delete_bucket.rb
551
581
  - lib/fog/storage/google_xml/requests/delete_object.rb
@@ -564,6 +594,7 @@ files:
564
594
  - lib/fog/storage/google_xml/requests/put_object.rb
565
595
  - lib/fog/storage/google_xml/requests/put_object_acl.rb
566
596
  - lib/fog/storage/google_xml/requests/put_object_url.rb
597
+ - lib/fog/storage/google_xml/utils.rb
567
598
  - tasks/bundler.rake
568
599
  - tasks/console.rake
569
600
  - tasks/lint.rake
@@ -625,6 +656,11 @@ files:
625
656
  - tests/models/monitoring/metric_descriptors_tests.rb
626
657
  - tests/models/monitoring/timeseries_collection_tests.rb
627
658
  - tests/models/monitoring/timeseries_descriptors_tests.rb
659
+ - tests/models/pubsub/received_message_tests.rb
660
+ - tests/models/pubsub/subscription_tests.rb
661
+ - tests/models/pubsub/subscriptions_tests.rb
662
+ - tests/models/pubsub/topic_tests.rb
663
+ - tests/models/pubsub/topics_tests.rb
628
664
  - tests/models/sql/flags_tests.rb
629
665
  - tests/models/sql/instance_tests.rb
630
666
  - tests/models/sql/instances_tests.rb
@@ -674,7 +710,7 @@ require_paths:
674
710
  - lib
675
711
  required_ruby_version: !ruby/object:Gem::Requirement
676
712
  requirements:
677
- - - ">="
713
+ - - "~>"
678
714
  - !ruby/object:Gem::Version
679
715
  version: '2.0'
680
716
  required_rubygems_version: !ruby/object:Gem::Requirement
@@ -684,7 +720,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
684
720
  version: '0'
685
721
  requirements: []
686
722
  rubyforge_project:
687
- rubygems_version: 2.5.1
723
+ rubygems_version: 2.4.8
688
724
  signing_key:
689
725
  specification_version: 4
690
726
  summary: Module for the 'fog' gem to support Google.