fog-google 0.0.5 → 0.0.6
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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/CONTRIBUTING.md +66 -1
- data/CONTRIBUTORS.md +1 -0
- data/README.md +24 -7
- data/Rakefile +14 -5
- data/examples/image_create.rb +1 -1
- data/examples/launch_micro_instance.rb +1 -1
- data/lib/fog/google/compute.rb +6 -2
- data/lib/fog/google/models/compute/addresses.rb +13 -0
- data/lib/fog/google/models/compute/backend_services.rb +3 -4
- data/lib/fog/google/models/compute/global_forwarding_rules.rb +5 -3
- data/lib/fog/google/models/compute/images.rb +8 -2
- data/lib/fog/google/models/compute/resource_views.rb +2 -2
- data/lib/fog/google/models/compute/server.rb +37 -3
- data/lib/fog/google/models/compute/target_http_proxies.rb +5 -2
- data/lib/fog/google/models/compute/target_http_proxy.rb +1 -1
- data/lib/fog/google/models/compute/target_instance.rb +2 -2
- data/lib/fog/google/models/compute/target_instances.rb +21 -8
- data/lib/fog/google/models/compute/url_map.rb +1 -1
- data/lib/fog/google/models/compute/url_maps.rb +5 -2
- data/lib/fog/google/requests/compute/insert_target_instance.rb +1 -1
- data/lib/fog/google/requests/compute/list_aggregated_target_instances.rb +42 -0
- data/lib/fog/google/version.rb +1 -1
- data/test/helpers/integration_test_helper.rb +22 -0
- data/test/helpers/test_collection.rb +37 -0
- data/test/helpers/test_helper.rb +19 -0
- data/test/integration/compute/test_backend_services.rb +11 -0
- data/test/integration/compute/test_disk_types.rb +39 -0
- data/test/integration/compute/test_disks.rb +11 -0
- data/test/integration/compute/test_forwarding_rules.rb +11 -0
- data/test/integration/compute/test_global_forwarding_rules.rb +11 -0
- data/test/integration/compute/test_http_health_checks.rb +11 -0
- data/test/integration/compute/test_images.rb +11 -0
- data/test/integration/compute/test_regions.rb +33 -0
- data/test/integration/compute/test_servers.rb +28 -0
- data/test/integration/compute/test_target_http_proxies.rb +11 -0
- data/test/integration/compute/test_target_instances.rb +11 -0
- data/test/integration/compute/test_target_pools.rb +11 -0
- data/test/integration/compute/test_url_maps.rb +11 -0
- data/test/integration/factories/backend_services_factory.rb +19 -0
- data/test/integration/factories/collection_factory.rb +27 -0
- data/test/integration/factories/disks_factory.rb +13 -0
- data/test/integration/factories/forwarding_rules_factory.rb +21 -0
- data/test/integration/factories/global_forwarding_rules_factory.rb +19 -0
- data/test/integration/factories/http_health_checks_factory.rb +11 -0
- data/test/integration/factories/images_factory.rb +12 -0
- data/test/integration/factories/servers_factory.rb +21 -0
- data/test/integration/factories/target_http_proxies_factory.rb +19 -0
- data/test/integration/factories/target_instances_factory.rb +20 -0
- data/test/integration/factories/target_pools_factory.rb +24 -0
- data/test/integration/factories/url_maps_factory.rb +19 -0
- data/test/integration/test_authentication.rb +59 -0
- data/tests/helpers/collection_helper.rb +2 -0
- data/tests/helpers/model_helper.rb +2 -0
- metadata +61 -31
- data/.ruby-version +0 -1
- data/spec/minitest_helper.rb +0 -15
- data/tests/credentials_tests.rb +0 -73
- data/tests/models/compute/backend_service_tests.rb +0 -7
- data/tests/models/compute/backend_services_tests.rb +0 -8
- data/tests/models/compute/disk_tests.rb +0 -9
- data/tests/models/compute/disk_types_tests.rb +0 -22
- data/tests/models/compute/disks_tests.rb +0 -9
- data/tests/models/compute/forwarding_rule_tests.rb +0 -8
- data/tests/models/compute/forwarding_rules_tests.rb +0 -8
- data/tests/models/compute/global_forwarding_rule_tests.rb +0 -7
- data/tests/models/compute/global_forwarding_rules_tests.rb +0 -7
- data/tests/models/compute/http_health_check_tests.rb +0 -5
- data/tests/models/compute/http_health_checks_tests.rb +0 -5
- data/tests/models/compute/image_tests.rb +0 -6
- data/tests/models/compute/images_tests.rb +0 -6
- data/tests/models/compute/region_tests.rb +0 -10
- data/tests/models/compute/regions_tests.rb +0 -19
- data/tests/models/compute/server_tests.rb +0 -37
- data/tests/models/compute/servers_tests.rb +0 -14
- data/tests/models/compute/target_http_proxies_tests.rb +0 -7
- data/tests/models/compute/target_http_proxy_test.rb +0 -6
- data/tests/models/compute/target_instance_tests.rb +0 -7
- data/tests/models/compute/target_instances_tests.rb +0 -7
- data/tests/models/compute/target_pool_tests.rb +0 -12
- data/tests/models/compute/target_pools_tests.rb +0 -11
- data/tests/models/compute/url_map_tests.rb +0 -6
- data/tests/models/compute/url_maps_tests.rb +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a924fff0c53902ab17cf84ba699c35cfb2139898
|
4
|
+
data.tar.gz: f2a1df01bb2be2dccf652d477c80b38fd20ce86d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ab467619990b86e9dd1d9144e928434f9343516a12f589f815879471b841372b2b3b020dea667336d0f5473b8a5f7e813bc5d798a5f72d67208a1fbf89111522
|
7
|
+
data.tar.gz: 1a640d9fd9479034e6445febe59eff84ff22a7033502f4bbf24c9a953210546578a84ccd89fd55707e2c99c9fe17119607b5c5a079aa5b88065624ed3e60745a
|
data/.gitignore
CHANGED
data/CONTRIBUTING.md
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
New contributors are always welcome, and when in doubt please ask questions! We strive to be an open and welcoming community. Please be nice to one another.
|
4
4
|
|
5
|
+
I recommend heading over to fog's [CONTRIBUTING](https://github.com/fog/fog/blob/master/CONTRIBUTING.md) and having a look around as well. It has information and context about the state of the `fog` project as a whole.
|
6
|
+
|
5
7
|
### Coding
|
6
8
|
|
7
9
|
* Pick a task:
|
@@ -9,6 +11,11 @@ New contributors are always welcome, and when in doubt please ask questions! We
|
|
9
11
|
* Review open [issues](https://github.com/fog/fog-google/issues) for things to help on.
|
10
12
|
* [Create an issue](https://github.com/fog/fog-google/issues/new) to start a discussion on additions or features.
|
11
13
|
* Fork the project, add your changes and tests to cover them in a topic branch.
|
14
|
+
* [Fork](https://github.com/fog/fog-google/fork)
|
15
|
+
* Create your feature branch (`git checkout -b my-new-feature`)
|
16
|
+
* Commit your changes (`git commit -am 'Add some feature'`)
|
17
|
+
* Push to the branch (`git push origin my-new-feature`)
|
18
|
+
* Create a new pull request
|
12
19
|
* Commit your changes and rebase against `fog/fog-google` to ensure everything is up to date.
|
13
20
|
* [Submit a pull request](https://github.com/fog/fog-google/compare/)
|
14
21
|
|
@@ -17,4 +24,62 @@ New contributors are always welcome, and when in doubt please ask questions! We
|
|
17
24
|
* Offer feedback on open [issues](https://github.com/fog/fog-google/issues).
|
18
25
|
* Organize or volunteer at events.
|
19
26
|
|
20
|
-
|
27
|
+
## Contributing Code
|
28
|
+
|
29
|
+
This document is very much a work in progress. Sorry about that.
|
30
|
+
|
31
|
+
It's worth noting that, if you're looking through the code, and you'd like to know the history of a line, you may not find it in the history of this repository, since most of the code was extracted from [fog/fog](https://github.com/fog/fog). So, you can look at the history from commit [fog/fog#c596e](https://github.com/fog/fog/tree/c596e710952aa9c90713da3fbfb3027db0608413) backward for more information.
|
32
|
+
|
33
|
+
### Development environment
|
34
|
+
|
35
|
+
If you're going to be doing any kind of modifications, I highly recommend using [rbenv](https://github.com/sstephenson/rbenv), [ruby-build](https://github.com/sstephenson/ruby-build), (don't forget the [dependencies](https://github.com/sstephenson/ruby-build/wiki#suggested-build-environment)!) and [bundler](http://bundler.io/).
|
36
|
+
|
37
|
+
Once you've got that all installed, run
|
38
|
+
|
39
|
+
```shell
|
40
|
+
$ bundle install
|
41
|
+
```
|
42
|
+
|
43
|
+
to install the required gems. You might have to [fight a bit](http://www.nokogiri.org/tutorials/installing_nokogiri.html) to get Nokogiri installed.
|
44
|
+
|
45
|
+
Then, you should be ready to go! If you'd like to drop into an interactive shell, configured with your `:test` credential, use
|
46
|
+
|
47
|
+
```shell
|
48
|
+
rake console
|
49
|
+
```
|
50
|
+
|
51
|
+
### Testing
|
52
|
+
|
53
|
+
This module is tested with [Minitest](https://github.com/seattlerb/minitest). Right now, the only tests that exist are live integration tests, found in `test/integration/`. After completing the installation in the README, (including setting up your credentials and keys,) make sure you have a `:test` credential in `~/.fog`, something like:
|
54
|
+
|
55
|
+
```
|
56
|
+
test:
|
57
|
+
google_project: my-project
|
58
|
+
google_client_email: xxxxxxxxxxxxx-xxxxxxxxxxxxx@developer.gserviceaccount.com
|
59
|
+
google_key_location: /path/to/my-project-xxxxxxxxxxxxx.p12
|
60
|
+
google_json_key_location: /path/to/my-project-xxxxxxxxxxxxx.json
|
61
|
+
```
|
62
|
+
|
63
|
+
Note that you need both a `.p12` and a `.json` key file for all the tests to pass.
|
64
|
+
|
65
|
+
Then you can run all the live tests:
|
66
|
+
|
67
|
+
```shell
|
68
|
+
$ rake test
|
69
|
+
```
|
70
|
+
|
71
|
+
or just one:
|
72
|
+
|
73
|
+
```shell
|
74
|
+
$ rake test TEST=test/integration/compute/test_servers.rb TESTOPTS="--name=TestServers#test_bootstrap_ssh_destroy"
|
75
|
+
```
|
76
|
+
|
77
|
+
#### Some notes about the tests as they stand
|
78
|
+
|
79
|
+
The live integration tests for resources, (servers, disks, etc.,) have a few components:
|
80
|
+
|
81
|
+
- The `TestCollection` **mixin module** lives in `test/helpers/test_collection.rb` and contains the standard tests to run for all resources, (e.g. `test_lifecycle`). It also calls `cleanup` on the resource's factory during teardown, to make sure that resources are getting destroyed before the next test run.
|
82
|
+
- The **factory**, (e.g. `ServersFactory`, in `test/integration/factories/servers_factory.rb`,) automates the creation of resources and/or supplies parameters for explicit creation of resources. For example, `ServersFactory` initializes a `DisksFactory` to supply disks in order to create servers, and implements the `params` method so that tests can create servers with unique names, correct zones and machine types, and automatically-created disks. `ServersFactory` inherits the `create` method from `CollectionFactory`, which allows tests to create servers on-demand.
|
83
|
+
- The **main test**, (e.g. `TestServers`, in `test/integration/compute/test_servers.rb`,) is the test that actually runs. It mixes in the `TestCollection` module in order to run the tests in that module, it supplies the `setup` method in which it initializes a `ServersFactory`, and it includes any other tests specific to this collection, (e.g. `test_bootstrap_ssh_destroy`).
|
84
|
+
|
85
|
+
If you want to create another resource, you should add live integration tests; all you need to do is create a factory in `test/integration/factories/my_resource_factory.rb` and a main test in `test/integration/compute/test_my_resource.rb` that mixes in `TestCollection`.
|
data/CONTRIBUTORS.md
CHANGED
data/README.md
CHANGED
@@ -40,16 +40,33 @@ gem 'fog-google'
|
|
40
40
|
|
41
41
|
And then execute:
|
42
42
|
|
43
|
-
|
43
|
+
```shell
|
44
|
+
$ bundle
|
45
|
+
```
|
44
46
|
|
45
47
|
Or install it yourself as:
|
46
48
|
|
47
|
-
|
49
|
+
```shell
|
50
|
+
$ gem install fog-google
|
51
|
+
```
|
52
|
+
|
53
|
+
### Setup
|
54
|
+
|
55
|
+
#### Credentials
|
56
|
+
|
57
|
+
Follow the [instructions to generate a private key](https://cloud.google.com/storage/docs/authentication#generating-a-private-key). You can then create a fog credentials file at `~/.fog`, which will look something like this:
|
58
|
+
|
59
|
+
```
|
60
|
+
my_credential:
|
61
|
+
google_project: my-project
|
62
|
+
google_client_email: xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@developer.gserviceaccount.com
|
63
|
+
google_json_key_location: /path/to/my-project-xxxxxxxxxxxx.json
|
64
|
+
```
|
65
|
+
|
66
|
+
#### SSH-ing into instances
|
67
|
+
|
68
|
+
If you want to be able to bootstrap SSH-able instances, (using `servers.bootstrap`,) be sure you have a key in `~/.ssh/id_rsa` and `~/.ssh/id_rsa.pub`.
|
48
69
|
|
49
70
|
## Contributing
|
50
71
|
|
51
|
-
|
52
|
-
2. Create your feature branch (`git checkout -b my-new-feature`)
|
53
|
-
3. Commit your changes (`git commit -am 'Add some feature'`)
|
54
|
-
4. Push to the branch (`git push origin my-new-feature`)
|
55
|
-
5. Create a new Pull Request
|
72
|
+
See `CONTRIBUTING.md` in this repository.
|
data/Rakefile
CHANGED
@@ -1,15 +1,13 @@
|
|
1
1
|
require 'bundler/gem_tasks'
|
2
2
|
require 'rake/testtask'
|
3
|
-
require 'fog/google'
|
4
3
|
|
5
4
|
Rake::TestTask.new do |t|
|
6
|
-
t.libs
|
7
|
-
t.
|
8
|
-
t.verbose = true
|
5
|
+
t.libs << "test"
|
6
|
+
t.pattern = File.join("test", "**", "test_*.rb")
|
9
7
|
end
|
10
8
|
|
11
9
|
desc 'Default Task'
|
12
|
-
task :default => [
|
10
|
+
task :default => [ 'test:travis' ]
|
13
11
|
|
14
12
|
namespace :test do
|
15
13
|
mock = ENV['FOG_MOCK'] || 'true'
|
@@ -32,3 +30,14 @@ namespace :google do
|
|
32
30
|
end
|
33
31
|
end
|
34
32
|
end
|
33
|
+
|
34
|
+
# From http://erniemiller.org/2014/02/05/7-lines-every-gems-rakefile-should-have/
|
35
|
+
# with some modification.
|
36
|
+
task :console do
|
37
|
+
require 'irb'
|
38
|
+
require 'irb/completion'
|
39
|
+
require 'fog/google'
|
40
|
+
Fog.credential = :test
|
41
|
+
ARGV.clear
|
42
|
+
IRB.start
|
43
|
+
end
|
data/examples/image_create.rb
CHANGED
@@ -2,7 +2,7 @@ def test
|
|
2
2
|
connection = Fog::Compute.new({ :provider => "Google" })
|
3
3
|
|
4
4
|
rawdisk = {
|
5
|
-
:source => nil, #
|
5
|
+
:source => nil, # Google Cloud Storage URL pointing to the disk image. (e.g. http://storage.googleapis.com/test/test.tar.gz)
|
6
6
|
:container_type => 'TAR',
|
7
7
|
}
|
8
8
|
|
data/lib/fog/google/compute.rb
CHANGED
@@ -3,7 +3,7 @@ module Fog
|
|
3
3
|
class Google < Fog::Service
|
4
4
|
requires :google_project
|
5
5
|
recognizes :app_name, :app_version, :google_client_email, :google_key_location, :google_key_string,
|
6
|
-
:google_client, :google_json_key_location, :google_json_key_string
|
6
|
+
:google_client, :google_json_key_location, :google_json_key_string, :google_extra_global_projects
|
7
7
|
|
8
8
|
GOOGLE_COMPUTE_API_VERSION = 'v1'
|
9
9
|
GOOGLE_COMPUTE_BASE_URL = 'https://www.googleapis.com/compute/'
|
@@ -46,6 +46,7 @@ module Fog
|
|
46
46
|
request :list_region_view_resources
|
47
47
|
request :list_zone_view_resources
|
48
48
|
request :list_target_instances
|
49
|
+
request :list_aggregated_target_instances
|
49
50
|
|
50
51
|
request :get_server
|
51
52
|
request :get_address
|
@@ -220,9 +221,11 @@ module Fog
|
|
220
221
|
|
221
222
|
class Mock
|
222
223
|
include Fog::Google::Shared
|
224
|
+
attr_reader :extra_global_projects
|
223
225
|
|
224
226
|
def initialize(options)
|
225
227
|
shared_initialize(options[:google_project], GOOGLE_COMPUTE_API_VERSION, GOOGLE_COMPUTE_BASE_URL)
|
228
|
+
@extra_global_projects = options[:google_extra_global_projects] || []
|
226
229
|
end
|
227
230
|
|
228
231
|
def self.data(api_version)
|
@@ -1050,7 +1053,7 @@ module Fog
|
|
1050
1053
|
include Fog::Google::Shared
|
1051
1054
|
|
1052
1055
|
attr_accessor :client
|
1053
|
-
attr_reader :compute
|
1056
|
+
attr_reader :compute, :extra_global_projects
|
1054
1057
|
|
1055
1058
|
def initialize(options)
|
1056
1059
|
shared_initialize(options[:google_project], GOOGLE_COMPUTE_API_VERSION, GOOGLE_COMPUTE_BASE_URL)
|
@@ -1059,6 +1062,7 @@ module Fog
|
|
1059
1062
|
@client = initialize_google_client(options)
|
1060
1063
|
@compute = @client.discovered_api('compute', api_version)
|
1061
1064
|
@resourceviews = @client.discovered_api('resourceviews', 'v1beta1')
|
1065
|
+
@extra_global_projects = options[:google_extra_global_projects] || []
|
1062
1066
|
end
|
1063
1067
|
end
|
1064
1068
|
|
@@ -34,6 +34,19 @@ module Fog
|
|
34
34
|
return nil if address.empty?
|
35
35
|
new(address.first['addresses'].first)
|
36
36
|
end
|
37
|
+
|
38
|
+
def get_by_name(ip_name)
|
39
|
+
names = service.list_aggregated_addresses(:filter => "name eq .*#{ip_name}").body['items']
|
40
|
+
name = names.each_value.select { |region| region.key?('addresses') }
|
41
|
+
|
42
|
+
return nil if name.empty?
|
43
|
+
new(name.first['addresses'].first)
|
44
|
+
end
|
45
|
+
|
46
|
+
def get_by_ip_address_or_name(ip_address_or_name)
|
47
|
+
get_by_ip_address(ip_address_or_name) or get_by_name(ip_address_or_name)
|
48
|
+
end
|
49
|
+
|
37
50
|
end
|
38
51
|
end
|
39
52
|
end
|
@@ -13,10 +13,9 @@ module Fog
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def get(identity)
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
new(response.body)
|
16
|
+
if backend_service = service.get_backend_service(identity).body
|
17
|
+
new(backend_service)
|
18
|
+
end
|
20
19
|
rescue Fog::Errors::NotFound
|
21
20
|
nil
|
22
21
|
end
|
@@ -13,9 +13,11 @@ module Fog
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def get(identity, region='global')
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
if global_forwarding_rule = service.get_global_forwarding_rule(identity, region).body
|
17
|
+
new(global_forwarding_rule)
|
18
|
+
end
|
19
|
+
rescue Fog::Errors::NotFound
|
20
|
+
nil
|
19
21
|
end
|
20
22
|
end
|
21
23
|
end
|
@@ -23,7 +23,7 @@ module Fog
|
|
23
23
|
|
24
24
|
def all
|
25
25
|
data = []
|
26
|
-
all_projects =
|
26
|
+
all_projects = [ self.service.project ] + global_projects
|
27
27
|
|
28
28
|
all_projects.each do |project|
|
29
29
|
begin
|
@@ -44,7 +44,7 @@ module Fog
|
|
44
44
|
|
45
45
|
def get(identity)
|
46
46
|
# Search own project before global projects
|
47
|
-
all_projects = [ self.service.project ] +
|
47
|
+
all_projects = [ self.service.project ] + global_projects
|
48
48
|
|
49
49
|
data = nil
|
50
50
|
all_projects.each do |project|
|
@@ -60,6 +60,12 @@ module Fog
|
|
60
60
|
return nil if data.nil?
|
61
61
|
new(data)
|
62
62
|
end
|
63
|
+
|
64
|
+
private
|
65
|
+
|
66
|
+
def global_projects
|
67
|
+
GLOBAL_PROJECTS + self.service.extra_global_projects
|
68
|
+
end
|
63
69
|
end
|
64
70
|
end
|
65
71
|
end
|
@@ -8,7 +8,7 @@ module Fog
|
|
8
8
|
model Fog::Compute::Google::ResourceView
|
9
9
|
|
10
10
|
def all(filters={})
|
11
|
-
if
|
11
|
+
if filters['region'].nil? && filters['zone'].nil?
|
12
12
|
data = []
|
13
13
|
service.list_regions.body['items'].each do |region|
|
14
14
|
data += service.list_region_views(region['name']).body['items'] || []
|
@@ -17,7 +17,7 @@ module Fog
|
|
17
17
|
data += service.list_zone_views(zone['name']).body['items'] || []
|
18
18
|
end
|
19
19
|
elsif filters['zone']
|
20
|
-
data = service.list_zone_views(
|
20
|
+
data = service.list_zone_views(filters['zone']).body['items'] || []
|
21
21
|
else
|
22
22
|
data = service.list_region_views(filters['region']).body['items'] || []
|
23
23
|
end
|
@@ -31,6 +31,21 @@ module Fog
|
|
31
31
|
attribute :auto_restart
|
32
32
|
attribute :on_host_maintenance
|
33
33
|
|
34
|
+
# Security account scope aliases used by official gcloud utility
|
35
|
+
# List derived from 'gcloud compute instances create --help'
|
36
|
+
GCE_SCOPE_ALIASES = {
|
37
|
+
'compute-ro' => 'compute.readonly',
|
38
|
+
'compute-rw' => 'compute',
|
39
|
+
'computeaccounts-ro' => 'computeaccounts.readonly',
|
40
|
+
'computeaccounts-rw' => 'computeaccounts',
|
41
|
+
'logging-write' => 'logging.write',
|
42
|
+
'sql' => 'sqlservice',
|
43
|
+
'sql-admin' => 'sqlservice.admin',
|
44
|
+
'storage-full' => 'devstorage.full_control',
|
45
|
+
'storage-ro' => 'devstorage.read_only',
|
46
|
+
'storage-rw' => 'devstorage.read_write'
|
47
|
+
}
|
48
|
+
|
34
49
|
def image_name=(args)
|
35
50
|
Fog::Logger.deprecation("image_name= is no longer used [light_black](#{caller.first})[/]")
|
36
51
|
end
|
@@ -206,6 +221,27 @@ module Fog
|
|
206
221
|
return self.metadata
|
207
222
|
end
|
208
223
|
|
224
|
+
def map_service_accounts(scope_array)
|
225
|
+
|
226
|
+
scope_array_expanded = scope_array.map do |e|
|
227
|
+
if GCE_SCOPE_ALIASES[e]
|
228
|
+
GCE_SCOPE_ALIASES[e]
|
229
|
+
else
|
230
|
+
e
|
231
|
+
end
|
232
|
+
end
|
233
|
+
|
234
|
+
scope_array_finalized = scope_array_expanded.map do |e|
|
235
|
+
if e.start_with?("https://")
|
236
|
+
e
|
237
|
+
else
|
238
|
+
"https://www.googleapis.com/auth/#{e}"
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
242
|
+
return scope_array_finalized
|
243
|
+
end
|
244
|
+
|
209
245
|
def reload
|
210
246
|
data = service.get_server(self.name, zone_name).body
|
211
247
|
self.merge_attributes(data)
|
@@ -241,9 +277,7 @@ module Fog
|
|
241
277
|
options['serviceAccounts'] = [{
|
242
278
|
"kind" => "compute#serviceAccount",
|
243
279
|
"email" => "default",
|
244
|
-
"scopes" => service_accounts
|
245
|
-
|w| w.start_with?("https://") ? w : "https://www.googleapis.com/auth/#{w}"
|
246
|
-
}
|
280
|
+
"scopes" => self.map_service_accounts(service_accounts)
|
247
281
|
}]
|
248
282
|
end
|
249
283
|
|
@@ -13,8 +13,11 @@ module Fog
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def get(identity)
|
16
|
-
|
17
|
-
|
16
|
+
if target_http_proxy = service.get_target_http_proxy(identity).body
|
17
|
+
new(target_http_proxy)
|
18
|
+
end
|
19
|
+
rescue Fog::Errors::NotFound
|
20
|
+
nil
|
18
21
|
end
|
19
22
|
end
|
20
23
|
end
|
@@ -11,7 +11,7 @@ module Fog
|
|
11
11
|
attribute :id, :aliases => 'id'
|
12
12
|
attribute :creation_timestamp, :aliases => 'creationTimestamp'
|
13
13
|
attribute :description, :aliases => 'description'
|
14
|
-
attribute :urlMap, :aliases => "urlMap"
|
14
|
+
attribute :urlMap, :aliases => ["urlMap", :url_map]
|
15
15
|
|
16
16
|
def save
|
17
17
|
requires :name
|
@@ -25,8 +25,8 @@ module Fog
|
|
25
25
|
'instance' => instance,
|
26
26
|
}
|
27
27
|
|
28
|
-
data = service.insert_target_instance(name, zone, options)
|
29
|
-
operation = Fog::Compute::Google::Operations.new(:service => service).get(data['name'])
|
28
|
+
data = service.insert_target_instance(name, zone, options)
|
29
|
+
operation = Fog::Compute::Google::Operations.new(:service => service).get(data.body['name'], data.body['zone'])
|
30
30
|
operation.wait_for { !pending? }
|
31
31
|
reload
|
32
32
|
end
|