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