fog-google 1.23.0 → 1.24.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/integration-compute-core.yml +13 -4
- data/.github/workflows/integration-compute-instance_groups.yml +12 -3
- data/.github/workflows/integration-compute-loadbalancing.yml +12 -3
- data/.github/workflows/integration-compute-networking.yml +11 -3
- data/.github/workflows/integration-monitoring.yml +11 -3
- data/.github/workflows/integration-pubsub.yml +11 -3
- data/.github/workflows/integration-sql.yml +11 -3
- data/.github/workflows/integration-storage.yml +11 -3
- data/.github/workflows/stale.yml +1 -1
- data/.github/workflows/unit.yml +6 -1
- data/.ruby-version +1 -0
- data/CHANGELOG.md +24 -0
- data/README.md +2 -2
- data/examples/create_instance_and_attach_disk_later.rb +86 -0
- data/fog-google.gemspec +3 -3
- data/lib/fog/compute/google/models/disks.rb +6 -1
- data/lib/fog/compute/google/models/server.rb +3 -3
- data/lib/fog/compute/google/requests/stop_server.rb +2 -2
- data/lib/fog/google/version.rb +1 -1
- data/test/integration/compute/core_compute/test_servers.rb +86 -0
- data/test/integration/storage/test_objects.rb +1 -0
- data/test/unit/compute/test_disk.rb +26 -0
- metadata +19 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 419c2fcd50b3c90ffe65c7a284bfc75479b1da059e0ea01b187a9f8f03721784
|
4
|
+
data.tar.gz: 470db0019a0de386752a1ca9c1a8cdb092e34037ef3e53a6a456a1ea033e6033
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: af159d5054ca5ceb4e391f8bbc019ad813c1e9163f11eeeb67dd3f57ccdfb157497d39451303210a7aa3e7b01f7295be937d445e97552f4fd8c9f1f42ca98c84
|
7
|
+
data.tar.gz: 00eb0b6200ad0fd56ea680e2dd1824548fe34d67da6e7469a872e27462281cf335f3aa23ede4956cea95433efa3e382c85c0ad60a732c0c96965b3830fac56f0
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# is no need to run them if SQL code or deps haven't changed and you cannot
|
3
3
|
# trigger jobs based on file changes in the same workflow.
|
4
4
|
# See: https://github.com/actions/runner/issues/456
|
5
|
-
name: integration-tests-compute-
|
5
|
+
name: integration-tests-compute-core
|
6
6
|
|
7
7
|
on:
|
8
8
|
push:
|
@@ -10,7 +10,7 @@ on:
|
|
10
10
|
pull_request:
|
11
11
|
branches: [ master ]
|
12
12
|
types: [ assigned, opened, synchronize, reopened, labeled ]
|
13
|
-
# Only run
|
13
|
+
# Only run integration tests if relevant code or deps have changed
|
14
14
|
paths:
|
15
15
|
# Module-specific paths
|
16
16
|
- 'lib/fog/compute/**'
|
@@ -22,14 +22,23 @@ on:
|
|
22
22
|
- 'lib/fog/google.rb'
|
23
23
|
# Trigger workflow on version upgrade
|
24
24
|
- 'lib/fog/google/version.rb'
|
25
|
+
# Trigger when workflow itself is updated
|
26
|
+
- '.github/workflows/integration-compute-core.yml'
|
27
|
+
|
28
|
+
# Setting hard concurrency limit for the project due to cleanup
|
29
|
+
# TODO(fog-google#626): remove this once cleanup is fixed
|
30
|
+
concurrency:
|
31
|
+
group: ${{ github.workflow }}
|
32
|
+
cancel-in-progress: false
|
25
33
|
|
26
34
|
jobs:
|
27
35
|
test-compute:
|
28
|
-
runs-on:
|
36
|
+
runs-on: fog-arc-runner
|
29
37
|
strategy:
|
30
38
|
matrix:
|
31
|
-
ruby-version: [ '
|
39
|
+
ruby-version: [ '3.0', '3.1', '3.2' ]
|
32
40
|
# Integration tests from the same task cannot run in parallel yet due to cleanup
|
41
|
+
# TODO(fog-google#626): remove this once cleanup is fixed
|
33
42
|
max-parallel: 1
|
34
43
|
|
35
44
|
steps:
|
@@ -10,7 +10,7 @@ on:
|
|
10
10
|
pull_request:
|
11
11
|
branches: [ master ]
|
12
12
|
types: [ assigned, opened, synchronize, reopened, labeled ]
|
13
|
-
# Only run
|
13
|
+
# Only run integration tests if relevant code or deps have changed
|
14
14
|
paths:
|
15
15
|
# Module-specific paths
|
16
16
|
- 'lib/fog/compute/**'
|
@@ -22,13 +22,22 @@ on:
|
|
22
22
|
- 'lib/fog/google.rb'
|
23
23
|
# Trigger workflow on version upgrade
|
24
24
|
- 'lib/fog/google/version.rb'
|
25
|
+
# Trigger when workflow itself is updated
|
26
|
+
- '.github/workflows/integration-compute-instance_groups.yml'
|
27
|
+
|
28
|
+
# Setting hard concurrency limit for the project due to cleanup
|
29
|
+
# TODO(fog-google#626): remove this once cleanup is fixed
|
30
|
+
concurrency:
|
31
|
+
group: ${{ github.workflow }}
|
32
|
+
cancel-in-progress: false
|
33
|
+
|
25
34
|
|
26
35
|
jobs:
|
27
36
|
test:
|
28
|
-
runs-on:
|
37
|
+
runs-on: fog-arc-runner
|
29
38
|
strategy:
|
30
39
|
matrix:
|
31
|
-
ruby-version: [ '
|
40
|
+
ruby-version: [ '3.0', '3.1', '3.2' ]
|
32
41
|
# Integration tests from the same task cannot run in parallel yet due to cleanup
|
33
42
|
max-parallel: 1
|
34
43
|
|
@@ -10,7 +10,7 @@ on:
|
|
10
10
|
pull_request:
|
11
11
|
branches: [ master ]
|
12
12
|
types: [ assigned, opened, synchronize, reopened, labeled ]
|
13
|
-
# Only run
|
13
|
+
# Only run integration tests if relevant code or deps have changed
|
14
14
|
paths:
|
15
15
|
# Module-specific paths
|
16
16
|
- 'lib/fog/compute/**'
|
@@ -22,13 +22,22 @@ on:
|
|
22
22
|
- 'lib/fog/google.rb'
|
23
23
|
# Trigger workflow on version upgrade
|
24
24
|
- 'lib/fog/google/version.rb'
|
25
|
+
# Trigger when workflow itself is updated
|
26
|
+
- '.github/workflows/integration-compute-loadbalancing.yml'
|
27
|
+
|
28
|
+
# Setting hard concurrency limit for the project due to cleanup
|
29
|
+
# TODO(fog-google#626): remove this once cleanup is fixed
|
30
|
+
concurrency:
|
31
|
+
group: ${{ github.workflow }}
|
32
|
+
cancel-in-progress: false
|
33
|
+
|
25
34
|
|
26
35
|
jobs:
|
27
36
|
test:
|
28
|
-
runs-on:
|
37
|
+
runs-on: fog-arc-runner
|
29
38
|
strategy:
|
30
39
|
matrix:
|
31
|
-
ruby-version: [ '
|
40
|
+
ruby-version: [ '3.0', '3.1', '3.2' ]
|
32
41
|
# Integration tests from the same task cannot run in parallel yet due to cleanup
|
33
42
|
max-parallel: 1
|
34
43
|
|
@@ -10,7 +10,7 @@ on:
|
|
10
10
|
pull_request:
|
11
11
|
branches: [ master ]
|
12
12
|
types: [ assigned, opened, synchronize, reopened, labeled ]
|
13
|
-
# Only run
|
13
|
+
# Only run integration tests if relevant code or deps have changed
|
14
14
|
paths:
|
15
15
|
# Module-specific paths
|
16
16
|
- 'lib/fog/compute/**'
|
@@ -22,13 +22,21 @@ on:
|
|
22
22
|
- 'lib/fog/google.rb'
|
23
23
|
# Trigger workflow on version upgrade
|
24
24
|
- 'lib/fog/google/version.rb'
|
25
|
+
# Trigger when workflow itself is updated
|
26
|
+
- '.github/workflows/integration-compute-networking.yml'
|
27
|
+
|
28
|
+
# Setting hard concurrency limit for the project due to cleanup
|
29
|
+
# TODO(fog-google#626): remove this once cleanup is fixed
|
30
|
+
concurrency:
|
31
|
+
group: ${{ github.workflow }}
|
32
|
+
cancel-in-progress: false
|
25
33
|
|
26
34
|
jobs:
|
27
35
|
test:
|
28
|
-
runs-on:
|
36
|
+
runs-on: fog-arc-runner
|
29
37
|
strategy:
|
30
38
|
matrix:
|
31
|
-
ruby-version: [ '
|
39
|
+
ruby-version: [ '3.0', '3.1', '3.2' ]
|
32
40
|
# Integration tests from the same task cannot run in parallel yet due to cleanup
|
33
41
|
max-parallel: 1
|
34
42
|
|
@@ -10,7 +10,7 @@ on:
|
|
10
10
|
pull_request:
|
11
11
|
branches: [ master ]
|
12
12
|
types: [ assigned, opened, synchronize, reopened, labeled ]
|
13
|
-
# Only run
|
13
|
+
# Only run integration tests if relevant code or deps have changed
|
14
14
|
paths:
|
15
15
|
# Module-specific paths
|
16
16
|
- 'lib/fog/google/monitoring.rb'
|
@@ -23,13 +23,21 @@ on:
|
|
23
23
|
- 'lib/fog/google.rb'
|
24
24
|
# Trigger workflow on version upgrade
|
25
25
|
- 'lib/fog/google/version.rb'
|
26
|
+
# Trigger when workflow itself is updated
|
27
|
+
- '.github/workflows/integration-monitoring.yml'
|
28
|
+
|
29
|
+
# Setting hard concurrency limit for the project due to cleanup
|
30
|
+
# TODO(fog-google#626): remove this once cleanup is fixed
|
31
|
+
concurrency:
|
32
|
+
group: ${{ github.workflow }}
|
33
|
+
cancel-in-progress: false
|
26
34
|
|
27
35
|
jobs:
|
28
36
|
test:
|
29
|
-
runs-on:
|
37
|
+
runs-on: fog-arc-runner
|
30
38
|
strategy:
|
31
39
|
matrix:
|
32
|
-
ruby-version: [ '
|
40
|
+
ruby-version: [ '3.0', '3.1', '3.2' ]
|
33
41
|
# Integration tests from the same task cannot run in parallel yet due to cleanup
|
34
42
|
max-parallel: 1
|
35
43
|
|
@@ -10,7 +10,7 @@ on:
|
|
10
10
|
pull_request:
|
11
11
|
branches: [ master ]
|
12
12
|
types: [ assigned, opened, synchronize, reopened, labeled ]
|
13
|
-
# Only run
|
13
|
+
# Only run integration tests if relevant code or deps have changed
|
14
14
|
paths:
|
15
15
|
# Module-specific paths
|
16
16
|
- 'lib/fog/google/pubsub.rb'
|
@@ -23,13 +23,21 @@ on:
|
|
23
23
|
- 'lib/fog/google.rb'
|
24
24
|
# Trigger workflow on version upgrade
|
25
25
|
- 'lib/fog/google/version.rb'
|
26
|
+
# Trigger when workflow itself is updated
|
27
|
+
- '.github/workflows/integration-pubsub.yml'
|
28
|
+
|
29
|
+
# Setting hard concurrency limit for the project due to cleanup
|
30
|
+
# TODO(fog-google#626): remove this once cleanup is fixed
|
31
|
+
concurrency:
|
32
|
+
group: ${{ github.workflow }}
|
33
|
+
cancel-in-progress: false
|
26
34
|
|
27
35
|
jobs:
|
28
36
|
test:
|
29
|
-
runs-on:
|
37
|
+
runs-on: fog-arc-runner
|
30
38
|
strategy:
|
31
39
|
matrix:
|
32
|
-
ruby-version: [ '
|
40
|
+
ruby-version: [ '3.0', '3.1', '3.2' ]
|
33
41
|
# Integration tests from the same task cannot run in parallel yet due to cleanup
|
34
42
|
max-parallel: 1
|
35
43
|
|
@@ -10,7 +10,7 @@ on:
|
|
10
10
|
pull_request:
|
11
11
|
branches: [ master ]
|
12
12
|
types: [ assigned, opened, synchronize, reopened, labeled ]
|
13
|
-
# Only run
|
13
|
+
# Only run integration tests if relevant code or deps have changed
|
14
14
|
paths:
|
15
15
|
# Module-specific paths
|
16
16
|
- 'lib/fog/google/sql.rb'
|
@@ -23,13 +23,21 @@ on:
|
|
23
23
|
- 'lib/fog/google.rb'
|
24
24
|
# Trigger workflow on version upgrade
|
25
25
|
- 'lib/fog/google/version.rb'
|
26
|
+
# Trigger when workflow itself is updated
|
27
|
+
- '.github/workflows/integration-sql.yml'
|
28
|
+
|
29
|
+
# Setting hard concurrency limit for the project due to cleanup
|
30
|
+
# TODO(fog-google#626): remove this once cleanup is fixed
|
31
|
+
concurrency:
|
32
|
+
group: ${{ github.workflow }}
|
33
|
+
cancel-in-progress: false
|
26
34
|
|
27
35
|
jobs:
|
28
36
|
test:
|
29
|
-
runs-on:
|
37
|
+
runs-on: fog-arc-runner
|
30
38
|
strategy:
|
31
39
|
matrix:
|
32
|
-
ruby-version: [ '
|
40
|
+
ruby-version: [ '3.0', '3.1', '3.2' ]
|
33
41
|
# Integration tests from the same task cannot run in parallel yet due to cleanup
|
34
42
|
max-parallel: 1
|
35
43
|
|
@@ -10,7 +10,7 @@ on:
|
|
10
10
|
pull_request:
|
11
11
|
branches: [ master ]
|
12
12
|
types: [ assigned, opened, synchronize, reopened, labeled ]
|
13
|
-
# Only run
|
13
|
+
# Only run integration tests if relevant code or deps have changed
|
14
14
|
paths:
|
15
15
|
# Module-specific paths
|
16
16
|
- 'lib/fog/google/storage.rb'
|
@@ -24,13 +24,21 @@ on:
|
|
24
24
|
- 'lib/fog/google.rb'
|
25
25
|
# Trigger workflow on version upgrade
|
26
26
|
- 'lib/fog/google/version.rb'
|
27
|
+
# Trigger when workflow itself is updated
|
28
|
+
- '.github/workflows/integration-storage.yml'
|
29
|
+
|
30
|
+
# Setting hard concurrency limit for the project due to cleanup
|
31
|
+
# TODO(fog-google#626): remove this once cleanup is fixed
|
32
|
+
concurrency:
|
33
|
+
group: ${{ github.workflow }}
|
34
|
+
cancel-in-progress: false
|
27
35
|
|
28
36
|
jobs:
|
29
37
|
test:
|
30
|
-
runs-on:
|
38
|
+
runs-on: fog-arc-runner
|
31
39
|
strategy:
|
32
40
|
matrix:
|
33
|
-
ruby-version: [ '
|
41
|
+
ruby-version: [ '3.0', '3.1', '3.2' ]
|
34
42
|
# Integration tests from the same task cannot run in parallel yet due to cleanup
|
35
43
|
max-parallel: 1
|
36
44
|
|
data/.github/workflows/stale.yml
CHANGED
data/.github/workflows/unit.yml
CHANGED
@@ -6,12 +6,17 @@ on:
|
|
6
6
|
pull_request:
|
7
7
|
branches: [ master ]
|
8
8
|
|
9
|
+
# Cancel in-progress jobs of the same ref or run_id
|
10
|
+
concurrency:
|
11
|
+
group: ${{ github.workflow }}-${{ github.ref || github.run_id }}
|
12
|
+
cancel-in-progress: true
|
13
|
+
|
9
14
|
jobs:
|
10
15
|
test-unit:
|
11
16
|
runs-on: ubuntu-latest
|
12
17
|
strategy:
|
13
18
|
matrix:
|
14
|
-
ruby-version: ['
|
19
|
+
ruby-version: [ '3.0', '3.1', '3.2', 'head', 'truffleruby-head']
|
15
20
|
|
16
21
|
steps:
|
17
22
|
- uses: actions/checkout@v4
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
3.2.2
|
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,30 @@ This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html
|
|
6
6
|
|
7
7
|
## Next
|
8
8
|
|
9
|
+
|
10
|
+
### User-facing
|
11
|
+
|
12
|
+
#### Added
|
13
|
+
|
14
|
+
- #613 Spruce up attaching and detaching disks on running servers [rchekaluk]
|
15
|
+
- #621 Added support for discard_local_ssd when stopping an instance [rchekaluk]
|
16
|
+
|
17
|
+
### Development changes
|
18
|
+
|
19
|
+
### Added
|
20
|
+
|
21
|
+
- #618 Deprecated Ruby-2.0 support [temikus]
|
22
|
+
- #624 Migrated the Integration tests to new ARC runners [temikus]
|
23
|
+
- #625 Fixed 'Ostruct' errors in storage tests [temikus]
|
24
|
+
- #627 Added concurrency groups to integration test workfows [temikus]
|
25
|
+
|
26
|
+
#### Fixed
|
27
|
+
|
28
|
+
- #604 Updated pry requirement from = 0.13.0 to = 0.14.2 [dependabot]
|
29
|
+
- #619 Updated google-cloud-env requirement from ~> 1.2 to >= 1.2, < 3.0 [dependabot]
|
30
|
+
- #620 Bump actions/stale from 8 to 9 [dependabot]
|
31
|
+
- #622 Updated fog-core requirement from < 2.3 to < 2.5 [dependabot]
|
32
|
+
|
9
33
|
## 1.23.0
|
10
34
|
|
11
35
|
### User-facing
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Fog::Google
|
2
2
|
|
3
|
-
[![Gem Version](https://badge.fury.io/rb/fog-google.svg)](http://badge.fury.io/rb/fog-google) [![Build Status](https://github.com/fog/fog-google/actions/workflows/
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/fog-google.svg)](http://badge.fury.io/rb/fog-google) [![Build Status](https://github.com/fog/fog-google/actions/workflows/unit.yml/badge.svg)](https://github.com/fog/fog-google/actions/workflows/unit.yml) [![codecov](https://codecov.io/gh/fog/fog-google/branch/master/graph/badge.svg)](https://codecov.io/gh/fog/fog-google) ![Dependabot Status](https://flat.badgen.net/github/dependabot/fog/fog-google) [![Doc coverage](https://inch-ci.org/github/fog/fog-google.svg?branch=master)](https://inch-ci.org/github/fog/fog-google)
|
4
4
|
|
5
5
|
The main maintainers for the Google sections are @icco, @Temikus and @plribeiro3000. Please send pull requests to them.
|
6
6
|
|
@@ -175,7 +175,7 @@ $ bundle exec pry
|
|
175
175
|
|
176
176
|
## Supported Ruby Versions
|
177
177
|
|
178
|
-
Fog-google is currently supported on Ruby
|
178
|
+
Fog-google is currently supported on Ruby 3.0+.
|
179
179
|
|
180
180
|
In general we support (and run our CI) for Ruby versions that are actively supported
|
181
181
|
by Ruby Core - that is, Ruby versions that are not end of life. Older versions of
|
@@ -0,0 +1,86 @@
|
|
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
|
+
ZONE = "us-central1-f"
|
8
|
+
PROJECT = Fog.credentials[:google_project]
|
9
|
+
|
10
|
+
def example
|
11
|
+
p "Connecting to Google API"
|
12
|
+
connection = Fog::Compute.new(:provider => "Google")
|
13
|
+
|
14
|
+
p "Creating disk"
|
15
|
+
disk = connection.disks.create(
|
16
|
+
:name => "fog-smoke-test-#{Time.now.to_i}",
|
17
|
+
:size_gb => 10,
|
18
|
+
:zone => ZONE,
|
19
|
+
:source_image => "debian-11-bullseye-v20220920"
|
20
|
+
)
|
21
|
+
|
22
|
+
p "Creating a second disk"
|
23
|
+
attached_disk = connection.disks.create(
|
24
|
+
:name => "fog-smoke-test-#{Time.now.to_i}",
|
25
|
+
:size_gb => 10,
|
26
|
+
:zone => ZONE
|
27
|
+
)
|
28
|
+
|
29
|
+
p "Waiting for disks to be ready"
|
30
|
+
disk.wait_for { ready? }
|
31
|
+
attached_disk.wait_for { ready? }
|
32
|
+
|
33
|
+
p "Creating a server"
|
34
|
+
server = connection.servers.create(
|
35
|
+
:name => "fog-smoke-test-#{Time.now.to_i}",
|
36
|
+
:disks => [disk.attached_disk_obj(boot: true, auto_delete: true)],
|
37
|
+
:machine_type => "n1-standard-1",
|
38
|
+
:private_key_path => File.expand_path("~/.ssh/id_rsa"),
|
39
|
+
:public_key_path => File.expand_path("~/.ssh/id_rsa.pub"),
|
40
|
+
:zone => ZONE,
|
41
|
+
# Will be simplified, see https://github.com/fog/fog-google/issues/360
|
42
|
+
:network_interfaces => [{ :network => "global/networks/default",
|
43
|
+
:access_configs => [{
|
44
|
+
:name => "External NAT",
|
45
|
+
:type => "ONE_TO_ONE_NAT"
|
46
|
+
}] }],
|
47
|
+
:username => ENV["USER"]
|
48
|
+
)
|
49
|
+
|
50
|
+
p "Attach second disk to the running server"
|
51
|
+
device_name = "fog-smoke-test-device-#{Time.now.to_i}"
|
52
|
+
# See https://github.com/fog/fog-google/blob/master/lib/fog/compute/google/models/disk.rb#L75-L107
|
53
|
+
# See https://github.com/fog/fog-google/blob/master/lib/fog/compute/google/models/server.rb#L35-L50
|
54
|
+
config_hash = {
|
55
|
+
:device_name => device_name,
|
56
|
+
:source => "https://www.googleapis.com/compute/v1/projects/#{PROJECT}/zones/#{ZONE}/disks/#{attached_disk.name}"
|
57
|
+
}
|
58
|
+
raise "Could not attach second disk" unless connection.attach_disk(server.name, ZONE, config_hash)
|
59
|
+
|
60
|
+
p "Waiting for disk to be attached"
|
61
|
+
attached_disk.wait_for { ! users.nil? && users != []}
|
62
|
+
|
63
|
+
p "Detach second disk"
|
64
|
+
raise "Could not detach second disk" unless connection.detach_disk(server.name, ZONE, device_name)
|
65
|
+
|
66
|
+
p "Waiting for second disk to be detached"
|
67
|
+
attached_disk.wait_for { users.nil? || users == []}
|
68
|
+
|
69
|
+
p "Deleting server"
|
70
|
+
raise "Could not delete server." unless server.destroy
|
71
|
+
|
72
|
+
p "Destroying second disk"
|
73
|
+
raise "Could not delete second disk." unless attached_disk.destroy
|
74
|
+
|
75
|
+
p "Waiting for second disk to be destroyed"
|
76
|
+
begin
|
77
|
+
rc = attached_disk.wait_for { status.nil? || status == 'DELETING' }
|
78
|
+
|
79
|
+
rescue => e
|
80
|
+
if e.message !~ /not found/ && e.message !~ /notFound/
|
81
|
+
raise e
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
example
|
data/fog-google.gemspec
CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
# As of 0.1.1
|
21
21
|
spec.required_ruby_version = ">= 2.0"
|
22
22
|
|
23
|
-
spec.add_dependency "fog-core", "< 2.
|
23
|
+
spec.add_dependency "fog-core", "< 2.5"
|
24
24
|
spec.add_dependency "fog-json", "~> 1.2"
|
25
25
|
spec.add_dependency "fog-xml", "~> 0.1.0"
|
26
26
|
|
@@ -32,14 +32,14 @@ Gem::Specification.new do |spec|
|
|
32
32
|
spec.add_dependency "google-apis-pubsub_v1", "~> 0.30"
|
33
33
|
spec.add_dependency "google-apis-sqladmin_v1beta4", "~> 0.38"
|
34
34
|
|
35
|
-
spec.add_dependency "google-cloud-env", "
|
35
|
+
spec.add_dependency "google-cloud-env", ">= 1.2", "< 3.0"
|
36
36
|
|
37
37
|
spec.add_dependency "addressable", ">= 2.7.0"
|
38
38
|
|
39
39
|
# Debugger
|
40
40
|
# Locked because pry-byebug is broken with 13+
|
41
41
|
# see: https://github.com/deivid-rodriguez/pry-byebug/issues/343
|
42
|
-
spec.add_development_dependency "pry", "= 0.
|
42
|
+
spec.add_development_dependency "pry", "= 0.14.2"
|
43
43
|
|
44
44
|
# Testing gems
|
45
45
|
spec.add_development_dependency "retriable"
|
@@ -36,6 +36,10 @@ module Fog
|
|
36
36
|
def get(identity, zone = nil)
|
37
37
|
if zone
|
38
38
|
disk = service.get_disk(identity, zone).to_h
|
39
|
+
|
40
|
+
# Force the hash to contain a :users key so that it will override any :users key in the existing object
|
41
|
+
disk[:users] = nil unless disk.include?(:users)
|
42
|
+
|
39
43
|
return new(disk)
|
40
44
|
elsif identity
|
41
45
|
response = all(:filter => "name eq #{identity}",
|
@@ -45,7 +49,8 @@ module Fog
|
|
45
49
|
end
|
46
50
|
rescue ::Google::Apis::ClientError => e
|
47
51
|
raise e unless e.status_code == 404
|
48
|
-
|
52
|
+
# Return an empty object so that wait_for processes the block
|
53
|
+
return new({:status => nil})
|
49
54
|
end
|
50
55
|
|
51
56
|
# Returns an attached disk configuration hash.
|
@@ -279,7 +279,7 @@ module Fog
|
|
279
279
|
if disk.is_a? Disk
|
280
280
|
disk_obj = disk.get_attached_disk
|
281
281
|
elsif disk.is_a? String
|
282
|
-
disk_obj = service.disks.attached_disk_obj(disk, attached_disk_options)
|
282
|
+
disk_obj = service.disks.attached_disk_obj(disk, **attached_disk_options)
|
283
283
|
end
|
284
284
|
|
285
285
|
data = service.attach_disk(identity, zone_name, disk_obj)
|
@@ -339,10 +339,10 @@ module Fog
|
|
339
339
|
operation
|
340
340
|
end
|
341
341
|
|
342
|
-
def stop(async = true)
|
342
|
+
def stop(async = true, discard_local_ssd=false)
|
343
343
|
requires :identity, :zone
|
344
344
|
|
345
|
-
data = service.stop_server(identity, zone_name)
|
345
|
+
data = service.stop_server(identity, zone_name, discard_local_ssd)
|
346
346
|
operation = Fog::Compute::Google::Operations
|
347
347
|
.new(:service => service)
|
348
348
|
.get(data.name, data.zone)
|
@@ -10,8 +10,8 @@ module Fog
|
|
10
10
|
end
|
11
11
|
|
12
12
|
class Real
|
13
|
-
def stop_server(identity, zone)
|
14
|
-
@compute.stop_instance(@project, zone.split("/")[-1], identity)
|
13
|
+
def stop_server(identity, zone, discard_local_ssd=false)
|
14
|
+
@compute.stop_instance(@project, zone.split("/")[-1], identity, discard_local_ssd: discard_local_ssd)
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
data/lib/fog/google/version.rb
CHANGED
@@ -132,6 +132,92 @@ class TestServers < FogIntegrationTest
|
|
132
132
|
assert server.ready?
|
133
133
|
end
|
134
134
|
|
135
|
+
def test_start_stop_discard_local_ssd
|
136
|
+
server = @factory.create
|
137
|
+
|
138
|
+
async = true
|
139
|
+
discard_local_ssd = true
|
140
|
+
|
141
|
+
server.stop(async, discard_local_ssd)
|
142
|
+
server.wait_for { stopped? }
|
143
|
+
|
144
|
+
assert server.stopped?
|
145
|
+
end
|
146
|
+
|
147
|
+
def test_attach_disk
|
148
|
+
# Creating server
|
149
|
+
server = @factory.create
|
150
|
+
server.wait_for { ready? }
|
151
|
+
|
152
|
+
disk_name = "fog-test-1-testservers-test-attach-disk-attachable" # suffix forces disk name to differ from the existing disk
|
153
|
+
# Creating disk #{disk_name}
|
154
|
+
disk = @disks.create(
|
155
|
+
:name => disk_name,
|
156
|
+
:source_image => TEST_IMAGE,
|
157
|
+
:size_gb => 64
|
158
|
+
)
|
159
|
+
device_name = "#{disk.name}-device"
|
160
|
+
|
161
|
+
# Attaching disk #{disk.name} as device #{device_name}
|
162
|
+
self_link = "https://www.googleapis.com/compute/v1/projects/#{TEST_PROJECT}/zones/#{TEST_ZONE}/disks/#{disk.name}"
|
163
|
+
server.attach_disk(self_link, true, device_name: device_name)
|
164
|
+
|
165
|
+
# Waiting for attachment
|
166
|
+
disk.wait_for { ! users.nil? && users != []}
|
167
|
+
|
168
|
+
assert_equal "https://www.googleapis.com/compute/v1/projects/#{TEST_PROJECT}/zones/#{TEST_ZONE}/instances/#{server.name}", disk.users[0]
|
169
|
+
|
170
|
+
server.reload
|
171
|
+
server_attached_disk = server.disks.select{|d| d[:boot] == false}[0]
|
172
|
+
assert_equal device_name, server_attached_disk[:device_name]
|
173
|
+
end
|
174
|
+
|
175
|
+
def test_detach_disk
|
176
|
+
# Creating server
|
177
|
+
server = @factory.create
|
178
|
+
server.wait_for { ready? }
|
179
|
+
|
180
|
+
disk_name = "fog-test-1-testservers-test-detach-attachable" # suffix forces disk name to differ from the existing disk
|
181
|
+
# Creating disk #{disk_name}
|
182
|
+
disk = @disks.create(
|
183
|
+
:name => disk_name,
|
184
|
+
:source_image => TEST_IMAGE,
|
185
|
+
:size_gb => 64
|
186
|
+
)
|
187
|
+
device_name = "#{disk.name}-device"
|
188
|
+
|
189
|
+
# Attaching disk #{disk.name} as device #{device_name}
|
190
|
+
self_link = "https://www.googleapis.com/compute/v1/projects/#{TEST_PROJECT}/zones/#{TEST_ZONE}/disks/#{disk.name}"
|
191
|
+
server.attach_disk(self_link, true, device_name: device_name)
|
192
|
+
disk.wait_for { ! users.nil? && users != []}
|
193
|
+
|
194
|
+
server.reload
|
195
|
+
server_attached_disk = server.disks.select{|d| d[:boot] == false}[0]
|
196
|
+
assert_equal device_name, server_attached_disk[:device_name]
|
197
|
+
|
198
|
+
# Detaching (synchronous) disk #{disk.name}
|
199
|
+
server.detach_disk(device_name, false)
|
200
|
+
|
201
|
+
disk.reload
|
202
|
+
assert disk.users.nil? || disk.users == []
|
203
|
+
|
204
|
+
# Re-attaching disk #{disk.name} as device #{device_name}
|
205
|
+
server.attach_disk(self_link, true, device_name: device_name)
|
206
|
+
disk.wait_for { ! users.nil? && users != []}
|
207
|
+
|
208
|
+
server.reload
|
209
|
+
server_attached_disk = server.disks.select{|d| d[:boot] == false}[0]
|
210
|
+
assert_equal device_name, server_attached_disk[:device_name]
|
211
|
+
|
212
|
+
# Detaching (async) disk #{disk.name}
|
213
|
+
server.detach_disk(device_name, true)
|
214
|
+
|
215
|
+
# Waiting for detachment
|
216
|
+
disk.wait_for { users.nil? || users == []}
|
217
|
+
|
218
|
+
assert disk.users.nil? || disk.users == []
|
219
|
+
end
|
220
|
+
|
135
221
|
def test_reset_windows_password
|
136
222
|
win_disk = @disks.create(
|
137
223
|
:name => "fog-test-1-testservers-test-reset-windows-password-2",
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require "helpers/test_helper"
|
2
|
+
|
3
|
+
class UnitTestDisk < Minitest::Test
|
4
|
+
def setup
|
5
|
+
Fog.mock!
|
6
|
+
@client = Fog::Compute.new(provider: "google",
|
7
|
+
google_project: "foo")
|
8
|
+
end
|
9
|
+
|
10
|
+
def teardown
|
11
|
+
Fog.unmock!
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_new_disk
|
15
|
+
disk = Fog::Compute::Google::Disk.new(
|
16
|
+
:name => "fog-1",
|
17
|
+
:size_gb => 10,
|
18
|
+
:zone => "us-central1-a",
|
19
|
+
:source_image => "debian-7-wheezy-v20131120"
|
20
|
+
)
|
21
|
+
assert_equal("fog-1", disk.name, "Fog::Compute::Google::Disk name is incorrect: #{disk.name}")
|
22
|
+
assert_equal(10, disk.size_gb, "Fog::Compute::Google::Disk size_gb is incorrect: #{disk.size_gb}")
|
23
|
+
assert_equal("us-central1-a", disk.zone, "Fog::Compute::Google::Disk zone is incorrect: #{disk.zone}")
|
24
|
+
assert_equal("debian-7-wheezy-v20131120", disk.source_image, "Fog::Compute::Google::Disk source_image is incorrect: #{disk.source_image}")
|
25
|
+
end
|
26
|
+
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.
|
4
|
+
version: 1.24.0
|
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:
|
12
|
+
date: 2024-04-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: fog-core
|
@@ -17,14 +17,14 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - "<"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '2.
|
20
|
+
version: '2.5'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - "<"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: '2.
|
27
|
+
version: '2.5'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: fog-json
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -161,16 +161,22 @@ dependencies:
|
|
161
161
|
name: google-cloud-env
|
162
162
|
requirement: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
|
-
- - "
|
164
|
+
- - ">="
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '1.2'
|
167
|
+
- - "<"
|
168
|
+
- !ruby/object:Gem::Version
|
169
|
+
version: '3.0'
|
167
170
|
type: :runtime
|
168
171
|
prerelease: false
|
169
172
|
version_requirements: !ruby/object:Gem::Requirement
|
170
173
|
requirements:
|
171
|
-
- - "
|
174
|
+
- - ">="
|
172
175
|
- !ruby/object:Gem::Version
|
173
176
|
version: '1.2'
|
177
|
+
- - "<"
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: '3.0'
|
174
180
|
- !ruby/object:Gem::Dependency
|
175
181
|
name: addressable
|
176
182
|
requirement: !ruby/object:Gem::Requirement
|
@@ -191,14 +197,14 @@ dependencies:
|
|
191
197
|
requirements:
|
192
198
|
- - '='
|
193
199
|
- !ruby/object:Gem::Version
|
194
|
-
version: 0.
|
200
|
+
version: 0.14.2
|
195
201
|
type: :development
|
196
202
|
prerelease: false
|
197
203
|
version_requirements: !ruby/object:Gem::Requirement
|
198
204
|
requirements:
|
199
205
|
- - '='
|
200
206
|
- !ruby/object:Gem::Version
|
201
|
-
version: 0.
|
207
|
+
version: 0.14.2
|
202
208
|
- !ruby/object:Gem::Dependency
|
203
209
|
name: retriable
|
204
210
|
requirement: !ruby/object:Gem::Requirement
|
@@ -325,6 +331,7 @@ files:
|
|
325
331
|
- ".hound.yml"
|
326
332
|
- ".rubocop.yml"
|
327
333
|
- ".ruby-gemset"
|
334
|
+
- ".ruby-version"
|
328
335
|
- CHANGELOG.md
|
329
336
|
- CONTRIBUTING.md
|
330
337
|
- CONTRIBUTORS.md
|
@@ -337,6 +344,7 @@ files:
|
|
337
344
|
- examples/backend_services.rb
|
338
345
|
- examples/bootstrap.rb
|
339
346
|
- examples/create_instance.rb
|
347
|
+
- examples/create_instance_and_attach_disk_later.rb
|
340
348
|
- examples/create_instance_with_attached_disk.rb
|
341
349
|
- examples/dns/project.rb
|
342
350
|
- examples/dns/zones.rb
|
@@ -851,6 +859,7 @@ files:
|
|
851
859
|
- test/integration/test_authentication.rb
|
852
860
|
- test/unit/compute/test_common_collections.rb
|
853
861
|
- test/unit/compute/test_common_models.rb
|
862
|
+
- test/unit/compute/test_disk.rb
|
854
863
|
- test/unit/compute/test_server.rb
|
855
864
|
- test/unit/dns/test_common_collections.rb
|
856
865
|
- test/unit/monitoring/test_comon_collections.rb
|
@@ -879,7 +888,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
879
888
|
- !ruby/object:Gem::Version
|
880
889
|
version: '0'
|
881
890
|
requirements: []
|
882
|
-
rubygems_version: 3.
|
891
|
+
rubygems_version: 3.4.10
|
883
892
|
signing_key:
|
884
893
|
specification_version: 4
|
885
894
|
summary: Module for the 'fog' gem to support Google.
|
@@ -970,6 +979,7 @@ test_files:
|
|
970
979
|
- test/integration/test_authentication.rb
|
971
980
|
- test/unit/compute/test_common_collections.rb
|
972
981
|
- test/unit/compute/test_common_models.rb
|
982
|
+
- test/unit/compute/test_disk.rb
|
973
983
|
- test/unit/compute/test_server.rb
|
974
984
|
- test/unit/dns/test_common_collections.rb
|
975
985
|
- test/unit/monitoring/test_comon_collections.rb
|