mirror of
https://github.com/puppetlabs/vmpooler-provider-gce.git
synced 2026-01-26 03:18:41 -05:00
Compare commits
47 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fce29feb60 | ||
|
|
651e4ba892 | ||
|
|
ec6383fac8 | ||
|
|
a5c4805106 | ||
|
|
fff2b5c766 | ||
|
|
8eec9a765f | ||
|
|
2d56355b74 | ||
|
|
bbce7bd019 | ||
|
|
428f7a041d | ||
|
|
5cad1c9711 | ||
|
|
01a0446e03 | ||
|
|
9639a2df7f | ||
|
|
e58c1a8bb3 | ||
|
|
81c59cfc9a | ||
|
|
493e358ba1 | ||
|
|
11405592c3 | ||
|
|
fbd6c7e505 | ||
|
|
f26108277e | ||
|
|
cec4ea64d6 | ||
|
|
2753d5da2a | ||
|
|
0347c42735 | ||
|
|
d3713133c8 | ||
|
|
62da7dd6ba | ||
|
|
521a0f11f1 | ||
|
|
726a598abc | ||
|
|
e0cc9712ed | ||
|
|
ea9896104a | ||
|
|
ac3ae71ac8 | ||
|
|
ce61a7a6c2 | ||
|
|
dc31dee2a4 | ||
|
|
2d4ff56429 | ||
|
|
2971ee6082 | ||
|
|
80234b4337 | ||
|
|
8795d3a818 | ||
|
|
515ba9f0a5 | ||
|
|
3c5f71aea2 | ||
|
|
bf2e20dcfe | ||
|
|
bee66557ea | ||
|
|
355d3a60ce | ||
|
|
06d940a964 | ||
|
|
1aaa6711b5 | ||
|
|
38064771aa | ||
|
|
fcf79c9421 | ||
|
|
36e9044087 | ||
|
|
1375093b43 | ||
|
|
911c15dc4e | ||
|
|
d8c47134ef |
20 changed files with 269 additions and 226 deletions
6
.github/dependabot.yml
vendored
6
.github/dependabot.yml
vendored
|
|
@ -5,3 +5,9 @@ updates:
|
||||||
schedule:
|
schedule:
|
||||||
interval: weekly
|
interval: weekly
|
||||||
open-pull-requests-limit: 10
|
open-pull-requests-limit: 10
|
||||||
|
|
||||||
|
- package-ecosystem: github-actions
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: weekly
|
||||||
|
open-pull-requests-limit: 10
|
||||||
|
|
|
||||||
12
.github/workflows/auto_release_prep.yml
vendored
Normal file
12
.github/workflows/auto_release_prep.yml
vendored
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
name: Automated release prep
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
auto_release_prep:
|
||||||
|
uses: puppetlabs/release-engineering-repo-standards/.github/workflows/auto_release_prep.yml@v1
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
project-type: ruby
|
||||||
|
version-file-path: lib/vmpooler-provider-gce/version.rb
|
||||||
8
.github/workflows/dependabot_merge.yml
vendored
Normal file
8
.github/workflows/dependabot_merge.yml
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
name: Dependabot auto-merge
|
||||||
|
|
||||||
|
on: pull_request
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
dependabot_merge:
|
||||||
|
uses: puppetlabs/release-engineering-repo-standards/.github/workflows/dependabot_merge.yml@v1
|
||||||
|
secrets: inherit
|
||||||
8
.github/workflows/ensure_label.yml
vendored
Normal file
8
.github/workflows/ensure_label.yml
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
name: Ensure label
|
||||||
|
|
||||||
|
on: pull_request
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
ensure_label:
|
||||||
|
uses: puppetlabs/release-engineering-repo-standards/.github/workflows/ensure_label.yml@v1
|
||||||
|
secrets: inherit
|
||||||
8
.github/workflows/release.yml
vendored
8
.github/workflows/release.yml
vendored
|
|
@ -7,10 +7,10 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: github.repository == 'puppetlabs/vmpooler-provider-gce'
|
if: github.repository == 'puppetlabs/vmpooler-provider-gce'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Get Current Version
|
- name: Get Current Version
|
||||||
uses: actions/github-script@v6
|
uses: actions/github-script@v7
|
||||||
id: cv
|
id: cv
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
|
|
@ -70,10 +70,10 @@ jobs:
|
||||||
prerelease: false
|
prerelease: false
|
||||||
|
|
||||||
# This step should closely match what is used in `docker/Dockerfile` in vmpooler-deployment
|
# This step should closely match what is used in `docker/Dockerfile` in vmpooler-deployment
|
||||||
- name: Install Ruby jruby-9.4.1.0
|
- name: Install Ruby jruby-9.4.3.0
|
||||||
uses: ruby/setup-ruby@v1
|
uses: ruby/setup-ruby@v1
|
||||||
with:
|
with:
|
||||||
ruby-version: 'jruby-9.4.1.0'
|
ruby-version: 'jruby-9.4.3.0'
|
||||||
|
|
||||||
- name: Build gem
|
- name: Build gem
|
||||||
run: gem build *.gemspec
|
run: gem build *.gemspec
|
||||||
|
|
|
||||||
4
.github/workflows/security.yml
vendored
4
.github/workflows/security.yml
vendored
|
|
@ -11,7 +11,7 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: checkout repo content
|
- name: checkout repo content
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 1
|
fetch-depth: 1
|
||||||
- name: setup ruby
|
- name: setup ruby
|
||||||
|
|
@ -22,7 +22,7 @@ jobs:
|
||||||
- name: check lock
|
- name: check lock
|
||||||
run: '[ -f "Gemfile.lock" ] && echo "package lock file exists, skipping" || bundle lock'
|
run: '[ -f "Gemfile.lock" ] && echo "package lock file exists, skipping" || bundle lock'
|
||||||
# install java
|
# install java
|
||||||
- uses: actions/setup-java@v3
|
- uses: actions/setup-java@v4
|
||||||
with:
|
with:
|
||||||
distribution: 'temurin' # See 'Supported distributions' for available options
|
distribution: 'temurin' # See 'Supported distributions' for available options
|
||||||
java-version: '17'
|
java-version: '17'
|
||||||
|
|
|
||||||
8
.github/workflows/testing.yml
vendored
8
.github/workflows/testing.yml
vendored
|
|
@ -18,9 +18,9 @@ jobs:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
ruby-version:
|
ruby-version:
|
||||||
- 'jruby-9.4.1.0'
|
- 'jruby-9.4.3.0'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- name: Set up Ruby
|
- name: Set up Ruby
|
||||||
uses: ruby/setup-ruby@v1
|
uses: ruby/setup-ruby@v1
|
||||||
with:
|
with:
|
||||||
|
|
@ -34,9 +34,9 @@ jobs:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
ruby-version:
|
ruby-version:
|
||||||
- 'jruby-9.4.1.0'
|
- 'jruby-9.4.3.0'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- name: Set up Ruby
|
- name: Set up Ruby
|
||||||
uses: ruby/setup-ruby@v1
|
uses: ruby/setup-ruby@v1
|
||||||
with:
|
with:
|
||||||
|
|
|
||||||
39
CHANGELOG.md
39
CHANGELOG.md
|
|
@ -1,5 +1,44 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## [1.3.0](https://github.com/puppetlabs/vmpooler-provider-gce/tree/1.3.0) (2023-08-18)
|
||||||
|
|
||||||
|
[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-gce/compare/1.2.0...1.3.0)
|
||||||
|
|
||||||
|
**Implemented enhancements:**
|
||||||
|
|
||||||
|
- \(POD-10\) Log reason for failed VM checks. [\#33](https://github.com/puppetlabs/vmpooler-provider-gce/pull/33) ([isaac-hammes](https://github.com/isaac-hammes))
|
||||||
|
|
||||||
|
## [1.2.0](https://github.com/puppetlabs/vmpooler-provider-gce/tree/1.2.0) (2023-08-10)
|
||||||
|
|
||||||
|
[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-gce/compare/1.1.0...1.2.0)
|
||||||
|
|
||||||
|
**Implemented enhancements:**
|
||||||
|
|
||||||
|
- Bump jruby to 9.4.3.0 and update lockfile [\#31](https://github.com/puppetlabs/vmpooler-provider-gce/pull/31) ([yachub](https://github.com/yachub))
|
||||||
|
|
||||||
|
**Merged pull requests:**
|
||||||
|
|
||||||
|
- Bump thor from 1.2.1 to 1.2.2 [\#29](https://github.com/puppetlabs/vmpooler-provider-gce/pull/29) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
|
||||||
|
## [1.1.0](https://github.com/puppetlabs/vmpooler-provider-gce/tree/1.1.0) (2023-05-01)
|
||||||
|
|
||||||
|
[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-gce/compare/1.0.0...1.1.0)
|
||||||
|
|
||||||
|
**Merged pull requests:**
|
||||||
|
|
||||||
|
- Migrate issue management to Jira [\#27](https://github.com/puppetlabs/vmpooler-provider-gce/pull/27) ([yachub](https://github.com/yachub))
|
||||||
|
- Bump jruby to 9.4.2.0 [\#26](https://github.com/puppetlabs/vmpooler-provider-gce/pull/26) ([yachub](https://github.com/yachub))
|
||||||
|
- Bump rack-test from 2.0.2 to 2.1.0 [\#24](https://github.com/puppetlabs/vmpooler-provider-gce/pull/24) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
- Update googleauth requirement from \>= 0.16.2, \< 1.3.0 to \>= 0.16.2, \< 1.4.0 [\#18](https://github.com/puppetlabs/vmpooler-provider-gce/pull/18) ([dependabot[bot]](https://github.com/apps/dependabot))
|
||||||
|
|
||||||
|
## [1.0.0](https://github.com/puppetlabs/vmpooler-provider-gce/tree/1.0.0) (2023-04-19)
|
||||||
|
|
||||||
|
[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-gce/compare/0.5.0...1.0.0)
|
||||||
|
|
||||||
|
**Breaking changes:**
|
||||||
|
|
||||||
|
- \(RE-15124\) Decouple DNS Record Management into DNS Plugins [\#21](https://github.com/puppetlabs/vmpooler-provider-gce/pull/21) ([yachub](https://github.com/yachub))
|
||||||
|
|
||||||
## [0.5.0](https://github.com/puppetlabs/vmpooler-provider-gce/tree/0.5.0) (2023-03-06)
|
## [0.5.0](https://github.com/puppetlabs/vmpooler-provider-gce/tree/0.5.0) (2023-03-06)
|
||||||
|
|
||||||
[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-gce/compare/0.4.0...0.5.0)
|
[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-gce/compare/0.4.0...0.5.0)
|
||||||
|
|
|
||||||
181
Gemfile.lock
181
Gemfile.lock
|
|
@ -1,16 +1,15 @@
|
||||||
PATH
|
PATH
|
||||||
remote: .
|
remote: .
|
||||||
specs:
|
specs:
|
||||||
vmpooler-provider-gce (0.5.0)
|
vmpooler-provider-gce (1.3.0)
|
||||||
google-apis-compute_v1 (~> 0.14)
|
google-apis-compute_v1 (~> 0.14)
|
||||||
google-cloud-dns (~> 0.35.1)
|
googleauth (>= 0.16.2, < 1.4.0)
|
||||||
googleauth (>= 0.16.2, < 1.3.0)
|
vmpooler (~> 3.0)
|
||||||
vmpooler (~> 2.3, >= 1.3.0)
|
|
||||||
|
|
||||||
GEM
|
GEM
|
||||||
remote: https://rubygems.org/
|
remote: https://rubygems.org/
|
||||||
specs:
|
specs:
|
||||||
addressable (2.8.1)
|
addressable (2.8.5)
|
||||||
public_suffix (>= 2.0.2, < 6.0)
|
public_suffix (>= 2.0.2, < 6.0)
|
||||||
ast (2.4.2)
|
ast (2.4.2)
|
||||||
bindata (2.4.15)
|
bindata (2.4.15)
|
||||||
|
|
@ -18,19 +17,19 @@ GEM
|
||||||
climate_control (1.2.0)
|
climate_control (1.2.0)
|
||||||
coderay (1.1.3)
|
coderay (1.1.3)
|
||||||
concurrent-ruby (1.2.2)
|
concurrent-ruby (1.2.2)
|
||||||
connection_pool (2.3.0)
|
connection_pool (2.4.1)
|
||||||
declarative (0.0.20)
|
declarative (0.0.20)
|
||||||
deep_merge (1.2.2)
|
deep_merge (1.2.2)
|
||||||
diff-lcs (1.5.0)
|
diff-lcs (1.5.0)
|
||||||
docile (1.4.0)
|
docile (1.4.0)
|
||||||
faraday (2.7.4)
|
faraday (2.7.10)
|
||||||
faraday-net_http (>= 2.0, < 3.1)
|
faraday-net_http (>= 2.0, < 3.1)
|
||||||
ruby2_keywords (>= 0.0.4)
|
ruby2_keywords (>= 0.0.4)
|
||||||
faraday-net_http (3.0.2)
|
faraday-net_http (3.0.2)
|
||||||
ffi (1.15.5-java)
|
ffi (1.15.5-java)
|
||||||
google-apis-compute_v1 (0.62.0)
|
google-apis-compute_v1 (0.75.0)
|
||||||
google-apis-core (>= 0.11.0, < 2.a)
|
google-apis-core (>= 0.11.0, < 2.a)
|
||||||
google-apis-core (0.11.0)
|
google-apis-core (0.11.1)
|
||||||
addressable (~> 2.5, >= 2.5.1)
|
addressable (~> 2.5, >= 2.5.1)
|
||||||
googleauth (>= 0.16.2, < 2.a)
|
googleauth (>= 0.16.2, < 2.a)
|
||||||
httpclient (>= 2.8.1, < 3.a)
|
httpclient (>= 2.8.1, < 3.a)
|
||||||
|
|
@ -39,20 +38,9 @@ GEM
|
||||||
retriable (>= 2.0, < 4.a)
|
retriable (>= 2.0, < 4.a)
|
||||||
rexml
|
rexml
|
||||||
webrick
|
webrick
|
||||||
google-apis-dns_v1 (0.31.0)
|
|
||||||
google-apis-core (>= 0.11.0, < 2.a)
|
|
||||||
google-cloud-core (1.6.0)
|
|
||||||
google-cloud-env (~> 1.0)
|
|
||||||
google-cloud-errors (~> 1.0)
|
|
||||||
google-cloud-dns (0.35.1)
|
|
||||||
google-apis-dns_v1 (~> 0.1)
|
|
||||||
google-cloud-core (~> 1.6)
|
|
||||||
googleauth (>= 0.16.2, < 2.a)
|
|
||||||
zonefile (~> 1.04)
|
|
||||||
google-cloud-env (1.6.0)
|
google-cloud-env (1.6.0)
|
||||||
faraday (>= 0.17.3, < 3.0)
|
faraday (>= 0.17.3, < 3.0)
|
||||||
google-cloud-errors (1.3.1)
|
googleauth (1.3.0)
|
||||||
googleauth (1.2.0)
|
|
||||||
faraday (>= 0.17.3, < 3.a)
|
faraday (>= 0.17.3, < 3.a)
|
||||||
jwt (>= 1.4, < 3.0)
|
jwt (>= 1.4, < 3.0)
|
||||||
memoist (~> 0.16)
|
memoist (~> 0.16)
|
||||||
|
|
@ -60,95 +48,110 @@ GEM
|
||||||
os (>= 0.9, < 2.0)
|
os (>= 0.9, < 2.0)
|
||||||
signet (>= 0.16, < 2.a)
|
signet (>= 0.16, < 2.a)
|
||||||
httpclient (2.8.3)
|
httpclient (2.8.3)
|
||||||
jwt (2.7.0)
|
jwt (2.7.1)
|
||||||
memoist (0.16.2)
|
memoist (0.16.2)
|
||||||
method_source (1.0.0)
|
method_source (1.0.0)
|
||||||
mini_mime (1.1.2)
|
mini_mime (1.1.5)
|
||||||
mock_redis (0.36.0)
|
mock_redis (0.37.0)
|
||||||
ruby2_keywords
|
|
||||||
multi_json (1.15.0)
|
multi_json (1.15.0)
|
||||||
mustermann (2.0.2)
|
mustermann (3.0.0)
|
||||||
ruby2_keywords (~> 0.0.1)
|
ruby2_keywords (~> 0.0.1)
|
||||||
net-ldap (0.17.1)
|
net-ldap (0.18.0)
|
||||||
nio4r (2.5.8-java)
|
nio4r (2.5.9)
|
||||||
opentelemetry-api (1.1.0)
|
nio4r (2.5.9-java)
|
||||||
opentelemetry-common (0.19.6)
|
opentelemetry-api (1.2.1)
|
||||||
|
opentelemetry-common (0.20.0)
|
||||||
opentelemetry-api (~> 1.0)
|
opentelemetry-api (~> 1.0)
|
||||||
opentelemetry-exporter-jaeger (0.20.1)
|
opentelemetry-exporter-jaeger (0.23.0)
|
||||||
opentelemetry-api (~> 1.0)
|
opentelemetry-api (~> 1.1)
|
||||||
opentelemetry-common (~> 0.19.2)
|
opentelemetry-common (~> 0.20)
|
||||||
opentelemetry-sdk (~> 1.0)
|
opentelemetry-sdk (~> 1.2)
|
||||||
|
opentelemetry-semantic_conventions
|
||||||
thrift
|
thrift
|
||||||
opentelemetry-instrumentation-base (0.19.0)
|
opentelemetry-instrumentation-base (0.22.2)
|
||||||
opentelemetry-api (~> 1.0)
|
opentelemetry-api (~> 1.0)
|
||||||
opentelemetry-instrumentation-concurrent_ruby (0.19.2)
|
opentelemetry-registry (~> 0.1)
|
||||||
|
opentelemetry-instrumentation-concurrent_ruby (0.21.1)
|
||||||
opentelemetry-api (~> 1.0)
|
opentelemetry-api (~> 1.0)
|
||||||
opentelemetry-instrumentation-base (~> 0.19.0)
|
opentelemetry-instrumentation-base (~> 0.22.1)
|
||||||
opentelemetry-instrumentation-http_client (0.19.4)
|
opentelemetry-instrumentation-http_client (0.22.2)
|
||||||
opentelemetry-api (~> 1.0)
|
opentelemetry-api (~> 1.0)
|
||||||
opentelemetry-common (~> 0.19.3)
|
opentelemetry-common (~> 0.20.0)
|
||||||
opentelemetry-instrumentation-base (~> 0.19.0)
|
opentelemetry-instrumentation-base (~> 0.22.1)
|
||||||
opentelemetry-instrumentation-redis (0.21.3)
|
opentelemetry-instrumentation-rack (0.23.4)
|
||||||
opentelemetry-api (~> 1.0)
|
opentelemetry-api (~> 1.0)
|
||||||
opentelemetry-common (~> 0.19.3)
|
opentelemetry-common (~> 0.20.0)
|
||||||
opentelemetry-instrumentation-base (~> 0.19.0)
|
opentelemetry-instrumentation-base (~> 0.22.1)
|
||||||
opentelemetry-instrumentation-sinatra (0.19.3)
|
opentelemetry-instrumentation-redis (0.25.3)
|
||||||
opentelemetry-api (~> 1.0)
|
opentelemetry-api (~> 1.0)
|
||||||
opentelemetry-common (~> 0.19.3)
|
opentelemetry-common (~> 0.20.0)
|
||||||
opentelemetry-instrumentation-base (~> 0.19.0)
|
opentelemetry-instrumentation-base (~> 0.22.1)
|
||||||
opentelemetry-registry (0.2.0)
|
opentelemetry-instrumentation-sinatra (0.23.2)
|
||||||
|
opentelemetry-api (~> 1.0)
|
||||||
|
opentelemetry-common (~> 0.20.0)
|
||||||
|
opentelemetry-instrumentation-base (~> 0.22.1)
|
||||||
|
opentelemetry-instrumentation-rack (~> 0.21)
|
||||||
|
opentelemetry-registry (0.3.0)
|
||||||
opentelemetry-api (~> 1.1)
|
opentelemetry-api (~> 1.1)
|
||||||
opentelemetry-resource_detectors (0.19.1)
|
opentelemetry-resource_detectors (0.24.1)
|
||||||
google-cloud-env
|
google-cloud-env
|
||||||
opentelemetry-sdk
|
opentelemetry-sdk (~> 1.0)
|
||||||
opentelemetry-sdk (1.2.0)
|
opentelemetry-sdk (1.3.0)
|
||||||
opentelemetry-api (~> 1.1)
|
opentelemetry-api (~> 1.1)
|
||||||
opentelemetry-common (~> 0.19.3)
|
opentelemetry-common (~> 0.20)
|
||||||
opentelemetry-registry (~> 0.2)
|
opentelemetry-registry (~> 0.2)
|
||||||
opentelemetry-semantic_conventions
|
opentelemetry-semantic_conventions
|
||||||
opentelemetry-semantic_conventions (1.8.0)
|
opentelemetry-semantic_conventions (1.10.0)
|
||||||
opentelemetry-api (~> 1.0)
|
opentelemetry-api (~> 1.0)
|
||||||
os (1.1.4)
|
os (1.1.4)
|
||||||
parallel (1.22.1)
|
parallel (1.23.0)
|
||||||
parser (3.2.1.0)
|
parser (3.2.2.3)
|
||||||
ast (~> 2.4.1)
|
ast (~> 2.4.1)
|
||||||
|
racc
|
||||||
pickup (0.0.11)
|
pickup (0.0.11)
|
||||||
prometheus-client (2.1.0)
|
prometheus-client (4.2.1)
|
||||||
|
pry (0.14.2)
|
||||||
|
coderay (~> 1.1)
|
||||||
|
method_source (~> 1.0)
|
||||||
pry (0.14.2-java)
|
pry (0.14.2-java)
|
||||||
coderay (~> 1.1)
|
coderay (~> 1.1)
|
||||||
method_source (~> 1.0)
|
method_source (~> 1.0)
|
||||||
spoon (~> 0.0)
|
spoon (~> 0.0)
|
||||||
public_suffix (5.0.1)
|
public_suffix (5.0.3)
|
||||||
puma (5.6.5-java)
|
puma (6.3.0)
|
||||||
nio4r (~> 2.0)
|
nio4r (~> 2.0)
|
||||||
rack (2.2.6.2)
|
puma (6.3.0-java)
|
||||||
rack-protection (2.2.4)
|
nio4r (~> 2.0)
|
||||||
rack
|
racc (1.7.1)
|
||||||
rack-test (2.0.2)
|
racc (1.7.1-java)
|
||||||
|
rack (2.2.8)
|
||||||
|
rack-protection (3.1.0)
|
||||||
|
rack (~> 2.2, >= 2.2.4)
|
||||||
|
rack-test (2.1.0)
|
||||||
rack (>= 1.3)
|
rack (>= 1.3)
|
||||||
rainbow (3.1.1)
|
rainbow (3.1.1)
|
||||||
rake (13.0.6)
|
rake (13.0.6)
|
||||||
redis (4.8.1)
|
redis (4.8.1)
|
||||||
regexp_parser (2.7.0)
|
regexp_parser (2.8.1)
|
||||||
representable (3.2.0)
|
representable (3.2.0)
|
||||||
declarative (< 0.1.0)
|
declarative (< 0.1.0)
|
||||||
trailblazer-option (>= 0.1.1, < 0.2.0)
|
trailblazer-option (>= 0.1.1, < 0.2.0)
|
||||||
uber (< 0.2.0)
|
uber (< 0.2.0)
|
||||||
retriable (3.1.2)
|
retriable (3.1.2)
|
||||||
rexml (3.2.5)
|
rexml (3.2.6)
|
||||||
rspec (3.12.0)
|
rspec (3.12.0)
|
||||||
rspec-core (~> 3.12.0)
|
rspec-core (~> 3.12.0)
|
||||||
rspec-expectations (~> 3.12.0)
|
rspec-expectations (~> 3.12.0)
|
||||||
rspec-mocks (~> 3.12.0)
|
rspec-mocks (~> 3.12.0)
|
||||||
rspec-core (3.12.1)
|
rspec-core (3.12.2)
|
||||||
rspec-support (~> 3.12.0)
|
rspec-support (~> 3.12.0)
|
||||||
rspec-expectations (3.12.2)
|
rspec-expectations (3.12.3)
|
||||||
diff-lcs (>= 1.2.0, < 2.0)
|
diff-lcs (>= 1.2.0, < 2.0)
|
||||||
rspec-support (~> 3.12.0)
|
rspec-support (~> 3.12.0)
|
||||||
rspec-mocks (3.12.3)
|
rspec-mocks (3.12.6)
|
||||||
diff-lcs (>= 1.2.0, < 2.0)
|
diff-lcs (>= 1.2.0, < 2.0)
|
||||||
rspec-support (~> 3.12.0)
|
rspec-support (~> 3.12.0)
|
||||||
rspec-support (3.12.0)
|
rspec-support (3.12.1)
|
||||||
rubocop (1.1.0)
|
rubocop (1.1.0)
|
||||||
parallel (~> 1.10)
|
parallel (~> 1.10)
|
||||||
parser (>= 2.7.1.5)
|
parser (>= 2.7.1.5)
|
||||||
|
|
@ -158,9 +161,9 @@ GEM
|
||||||
rubocop-ast (>= 1.0.1)
|
rubocop-ast (>= 1.0.1)
|
||||||
ruby-progressbar (~> 1.7)
|
ruby-progressbar (~> 1.7)
|
||||||
unicode-display_width (>= 1.4.0, < 2.0)
|
unicode-display_width (>= 1.4.0, < 2.0)
|
||||||
rubocop-ast (1.27.0)
|
rubocop-ast (1.29.0)
|
||||||
parser (>= 3.2.1.0)
|
parser (>= 3.2.1.0)
|
||||||
ruby-progressbar (1.12.0)
|
ruby-progressbar (1.13.0)
|
||||||
ruby2_keywords (0.0.5)
|
ruby2_keywords (0.0.5)
|
||||||
signet (0.17.0)
|
signet (0.17.0)
|
||||||
addressable (~> 2.8)
|
addressable (~> 2.8)
|
||||||
|
|
@ -173,52 +176,52 @@ GEM
|
||||||
simplecov_json_formatter (~> 0.1)
|
simplecov_json_formatter (~> 0.1)
|
||||||
simplecov-html (0.12.3)
|
simplecov-html (0.12.3)
|
||||||
simplecov_json_formatter (0.1.4)
|
simplecov_json_formatter (0.1.4)
|
||||||
sinatra (2.2.4)
|
sinatra (3.1.0)
|
||||||
mustermann (~> 2.0)
|
mustermann (~> 3.0)
|
||||||
rack (~> 2.2)
|
rack (~> 2.2, >= 2.2.4)
|
||||||
rack-protection (= 2.2.4)
|
rack-protection (= 3.1.0)
|
||||||
tilt (~> 2.0)
|
tilt (~> 2.0)
|
||||||
spicy-proton (2.1.15)
|
spicy-proton (2.1.15)
|
||||||
bindata (~> 2.3)
|
bindata (~> 2.3)
|
||||||
spoon (0.0.6)
|
spoon (0.0.6)
|
||||||
ffi
|
ffi
|
||||||
statsd-ruby (1.5.0)
|
statsd-ruby (1.5.0)
|
||||||
thor (1.2.1)
|
thor (1.2.2)
|
||||||
thrift (0.18.1)
|
thrift (0.18.1)
|
||||||
tilt (2.1.0)
|
tilt (2.2.0)
|
||||||
trailblazer-option (0.1.2)
|
trailblazer-option (0.1.2)
|
||||||
uber (0.1.0)
|
uber (0.1.0)
|
||||||
unicode-display_width (1.8.0)
|
unicode-display_width (1.8.0)
|
||||||
vmpooler (2.4.0)
|
vmpooler (3.2.0)
|
||||||
concurrent-ruby (~> 1.1)
|
concurrent-ruby (~> 1.1)
|
||||||
connection_pool (~> 2.2)
|
connection_pool (~> 2.2)
|
||||||
deep_merge (~> 1.2)
|
deep_merge (~> 1.2)
|
||||||
net-ldap (~> 0.16)
|
net-ldap (~> 0.16)
|
||||||
opentelemetry-exporter-jaeger (= 0.20.1)
|
opentelemetry-exporter-jaeger (= 0.23.0)
|
||||||
opentelemetry-instrumentation-concurrent_ruby (= 0.19.2)
|
opentelemetry-instrumentation-concurrent_ruby (= 0.21.1)
|
||||||
opentelemetry-instrumentation-http_client (= 0.19.4)
|
opentelemetry-instrumentation-http_client (= 0.22.2)
|
||||||
opentelemetry-instrumentation-redis (= 0.21.3)
|
opentelemetry-instrumentation-redis (= 0.25.3)
|
||||||
opentelemetry-instrumentation-sinatra (= 0.19.3)
|
opentelemetry-instrumentation-sinatra (= 0.23.2)
|
||||||
opentelemetry-resource_detectors (= 0.19.1)
|
opentelemetry-resource_detectors (= 0.24.1)
|
||||||
opentelemetry-sdk (~> 1.0, >= 1.0.2)
|
opentelemetry-sdk (~> 1.3, >= 1.3.0)
|
||||||
pickup (~> 0.0.11)
|
pickup (~> 0.0.11)
|
||||||
prometheus-client (~> 2.0)
|
prometheus-client (>= 2, < 5)
|
||||||
puma (~> 5.0, >= 5.0.4)
|
puma (>= 5.0.4, < 7)
|
||||||
rack (~> 2.2)
|
rack (>= 2.2, < 4.0)
|
||||||
rake (~> 13.0)
|
rake (~> 13.0)
|
||||||
redis (~> 4.1)
|
redis (~> 4.1)
|
||||||
sinatra (~> 2.0)
|
sinatra (>= 2, < 4)
|
||||||
spicy-proton (~> 2.1)
|
spicy-proton (~> 2.1)
|
||||||
statsd-ruby (~> 1.4)
|
statsd-ruby (~> 1.4)
|
||||||
webrick (1.8.1)
|
webrick (1.8.1)
|
||||||
yarjuf (2.0.0)
|
yarjuf (2.0.0)
|
||||||
builder
|
builder
|
||||||
rspec (~> 3)
|
rspec (~> 3)
|
||||||
zonefile (1.06)
|
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
universal-java-1.8
|
universal-java-1.8
|
||||||
universal-java-11
|
universal-java-11
|
||||||
|
x86_64-linux
|
||||||
|
|
||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
climate_control (>= 0.2.0)
|
climate_control (>= 0.2.0)
|
||||||
|
|
@ -233,4 +236,4 @@ DEPENDENCIES
|
||||||
yarjuf (>= 2.0)
|
yarjuf (>= 2.0)
|
||||||
|
|
||||||
BUNDLED WITH
|
BUNDLED WITH
|
||||||
2.4.5
|
2.4.7
|
||||||
|
|
|
||||||
37
README.md
37
README.md
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
- [vmpooler-provider-gce](#vmpooler-provider-gce)
|
- [vmpooler-provider-gce](#vmpooler-provider-gce)
|
||||||
- [Usage](#usage)
|
- [Usage](#usage)
|
||||||
|
- [Migrating to v1](#migrating-to-v1)
|
||||||
- [DNS](#dns)
|
- [DNS](#dns)
|
||||||
- [Labels](#labels)
|
- [Labels](#labels)
|
||||||
- [Pre-requisite](#pre-requisite)
|
- [Pre-requisite](#pre-requisite)
|
||||||
|
|
@ -23,6 +24,42 @@ GCE authorization is handled via a service account (or personal account) private
|
||||||
|
|
||||||
1. GOOGLE_APPLICATION_CREDENTIALS environment variable eg GOOGLE_APPLICATION_CREDENTIALS=/my/home/directory/my_account_key.json
|
1. GOOGLE_APPLICATION_CREDENTIALS environment variable eg GOOGLE_APPLICATION_CREDENTIALS=/my/home/directory/my_account_key.json
|
||||||
|
|
||||||
|
### Migrating to v1
|
||||||
|
|
||||||
|
Starting with the v1.x release, management of DNS records has been extracted from this compute provider and implemented as DNS plugins, similar to compute providers. This means each pool configuration should be pointing to a configuration object in `:dns_config` to determine it's method of record management.
|
||||||
|
|
||||||
|
For those using DNS management via this provider, the DNS related options should be moved under `:dns_configs:<INSERT_YOUR_OWN_SYMBOL>` with the value for `dns_class`.
|
||||||
|
|
||||||
|
For example, the following keys in a v0.x GCE provider config:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
:providers:
|
||||||
|
:gce:
|
||||||
|
domain: vmpooler.example.com
|
||||||
|
dns_zone_resource_name: vmpooler-example-com
|
||||||
|
```
|
||||||
|
|
||||||
|
Would be moved to:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
:dns_configs:
|
||||||
|
:example:
|
||||||
|
dns_class: gcp-clouddns
|
||||||
|
project: jake-vmpooler-dev
|
||||||
|
domain: vmpooler.example.com
|
||||||
|
zone_name: vmpooler-example-com
|
||||||
|
```
|
||||||
|
|
||||||
|
Then any pools that should have records created via the dns config above should now reference the named dns config in the `dns_plugin` key:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
:pools:
|
||||||
|
- name: 'debian-11-x86_64'
|
||||||
|
dns_plugin: 'example'
|
||||||
|
```
|
||||||
|
|
||||||
|
For complete examples on how to use the GCP DNS plugin see [vmpooler-dns-gcp](https://github.com/puppetlabs/vmpooler-dns-gcp).
|
||||||
|
|
||||||
### DNS
|
### DNS
|
||||||
DNS is integrated via Google's CloudDNS service. To enable, a CloudDNS zone name must be provided in the config (see the example yaml file dns_zone_resource_name)
|
DNS is integrated via Google's CloudDNS service. To enable, a CloudDNS zone name must be provided in the config (see the example yaml file dns_zone_resource_name)
|
||||||
|
|
||||||
|
|
|
||||||
7
install-gemfile-lock
Executable file
7
install-gemfile-lock
Executable file
|
|
@ -0,0 +1,7 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# The container tag should closely match what is used in `docker/Dockerfile` in vmpooler-deployment
|
||||||
|
docker run -it --rm \
|
||||||
|
-v $(pwd):/app \
|
||||||
|
jruby:9.4.3.0-jdk11 \
|
||||||
|
/bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends make git netbase && cd /app && gem install bundler && bundle install --jobs 3; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"'
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module VmpoolerProviderGce
|
module VmpoolerProviderGce
|
||||||
VERSION = '0.5.0'
|
VERSION = '1.3.0'
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -1,63 +0,0 @@
|
||||||
# frozen_string_literal: true
|
|
||||||
|
|
||||||
require 'googleauth'
|
|
||||||
require 'google/cloud/dns'
|
|
||||||
|
|
||||||
module Vmpooler
|
|
||||||
class PoolManager
|
|
||||||
# This class interacts with GCP Cloud DNS to create or delete records.
|
|
||||||
class CloudDns
|
|
||||||
def initialize(project, dns_zone_resource_name)
|
|
||||||
@dns = Google::Cloud::Dns.new(project_id: project)
|
|
||||||
@dns_zone_resource_name = dns_zone_resource_name
|
|
||||||
end
|
|
||||||
|
|
||||||
def dns_create_or_replace(created_instance)
|
|
||||||
dns_zone = @dns.zone(@dns_zone_resource_name) if @dns_zone_resource_name
|
|
||||||
return unless dns_zone && created_instance && created_instance['name'] && created_instance['ip']
|
|
||||||
|
|
||||||
retries = 0
|
|
||||||
name = created_instance['name']
|
|
||||||
begin
|
|
||||||
change = dns_zone.add(name, 'A', 60, [created_instance['ip']])
|
|
||||||
debug_logger("#{change.id} - #{change.started_at} - #{change.status} DNS address added") if change
|
|
||||||
rescue Google::Cloud::AlreadyExistsError => _e
|
|
||||||
# DNS setup is done only for new instances, so in the rare case where a DNS record already exists (it is stale) and we replace it.
|
|
||||||
# the error is Google::Cloud::AlreadyExistsError: alreadyExists: The resource 'entity.change.additions[0]' named 'instance-8.test.vmpooler.net. (A)' already exists
|
|
||||||
change = dns_zone.replace(name, 'A', 60, [created_instance['ip']])
|
|
||||||
debug_logger("#{change.id} - #{change.started_at} - #{change.status} DNS address previously existed and was replaced") if change
|
|
||||||
rescue Google::Cloud::FailedPreconditionError => e
|
|
||||||
# this error was experienced intermittently, will retry to see if it can complete successfully
|
|
||||||
# the error is Google::Cloud::FailedPreconditionError: conditionNotMet: Precondition not met for 'entity.change.deletions[0]'
|
|
||||||
debug_logger("DNS create failed, retrying error: #{e}")
|
|
||||||
sleep 5
|
|
||||||
retry if (retries += 1) < 30
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def dns_teardown(created_instance)
|
|
||||||
dns_zone = @dns.zone(@dns_zone_resource_name) if @dns_zone_resource_name
|
|
||||||
return unless dns_zone && created_instance
|
|
||||||
|
|
||||||
retries = 0
|
|
||||||
name = created_instance['name']
|
|
||||||
change = dns_zone.remove(name, 'A')
|
|
||||||
debug_logger("#{change.id} - #{change.started_at} - #{change.status} DNS address removed") if change
|
|
||||||
rescue Google::Cloud::FailedPreconditionError => e
|
|
||||||
# this error was experienced intermittently, will retry to see if it can complete successfully
|
|
||||||
# the error is Google::Cloud::FailedPreconditionError: conditionNotMet: Precondition not met for 'entity.change.deletions[1]'
|
|
||||||
debug_logger("DNS teardown failed, retrying error: #{e}")
|
|
||||||
sleep 5
|
|
||||||
retry if (retries += 1) < 30
|
|
||||||
end
|
|
||||||
|
|
||||||
# used in local dev environment, set DEBUG_FLAG=true
|
|
||||||
# this way the upstream vmpooler manager does not get polluted with logs
|
|
||||||
def debug_logger(message, send_to_upstream: false)
|
|
||||||
# the default logger is simple and does not enforce debug levels (the first argument)
|
|
||||||
puts message if ENV['DEBUG_FLAG']
|
|
||||||
logger.log('[g]', message) if send_to_upstream
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
require 'googleauth'
|
|
||||||
require 'google/apis/compute_v1'
|
|
||||||
require 'vmpooler/cloud_dns'
|
|
||||||
require 'bigdecimal'
|
require 'bigdecimal'
|
||||||
require 'bigdecimal/util'
|
require 'bigdecimal/util'
|
||||||
|
require 'google/apis/compute_v1'
|
||||||
|
require 'googleauth'
|
||||||
|
require 'vmpooler/dns/base'
|
||||||
require 'vmpooler/providers/base'
|
require 'vmpooler/providers/base'
|
||||||
|
|
||||||
module Vmpooler
|
module Vmpooler
|
||||||
|
|
@ -82,12 +82,9 @@ module Vmpooler
|
||||||
return provider_config['machine_type'] if provider_config['machine_type']
|
return provider_config['machine_type'] if provider_config['machine_type']
|
||||||
end
|
end
|
||||||
|
|
||||||
def domain
|
def domain(pool_name)
|
||||||
provider_config['domain']
|
dns_plugin_name = pool_config(pool_name)['dns_plugin']
|
||||||
end
|
dns_config(dns_plugin_name)
|
||||||
|
|
||||||
def dns_zone_resource_name
|
|
||||||
provider_config['dns_zone_resource_name']
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# Base methods that are implemented:
|
# Base methods that are implemented:
|
||||||
|
|
@ -191,7 +188,7 @@ module Vmpooler
|
||||||
boot: true,
|
boot: true,
|
||||||
initialize_params: init_params
|
initialize_params: init_params
|
||||||
)
|
)
|
||||||
append_domain = domain || global_config[:config]['domain']
|
append_domain = domain(pool_name)
|
||||||
fqdn = "#{new_vmname}.#{append_domain}" if append_domain
|
fqdn = "#{new_vmname}.#{append_domain}" if append_domain
|
||||||
|
|
||||||
# Assume all pool config is valid i.e. not missing
|
# Assume all pool config is valid i.e. not missing
|
||||||
|
|
@ -208,9 +205,12 @@ module Vmpooler
|
||||||
debug_logger('trigger insert_instance')
|
debug_logger('trigger insert_instance')
|
||||||
result = connection.insert_instance(project, zone(pool_name), client)
|
result = connection.insert_instance(project, zone(pool_name), client)
|
||||||
wait_for_operation(project, pool_name, result)
|
wait_for_operation(project, pool_name, result)
|
||||||
created_instance = get_vm(pool_name, new_vmname)
|
get_vm(pool_name, new_vmname)
|
||||||
dns_setup(created_instance)
|
end
|
||||||
created_instance
|
|
||||||
|
def get_vm_ip_address(vm_name, pool_name)
|
||||||
|
vm_object = get_vm(pool_name, vm_name)
|
||||||
|
vm_object['ip']
|
||||||
end
|
end
|
||||||
|
|
||||||
# create_disk creates an additional disk for an existing VM. It will name the new
|
# create_disk creates an additional disk for an existing VM. It will name the new
|
||||||
|
|
@ -424,10 +424,8 @@ module Vmpooler
|
||||||
|
|
||||||
unless deleted
|
unless deleted
|
||||||
debug_logger("trigger delete_instance #{vm_name}")
|
debug_logger("trigger delete_instance #{vm_name}")
|
||||||
vm_hash = get_vm(pool_name, vm_name)
|
|
||||||
result = connection.delete_instance(project, zone(pool_name), vm_name)
|
result = connection.delete_instance(project, zone(pool_name), vm_name)
|
||||||
wait_for_operation(project, pool_name, result, 10)
|
wait_for_operation(project, pool_name, result, 10)
|
||||||
dns_teardown(vm_hash)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# list and delete any leftover disk, for instance if they were detached from the instance
|
# list and delete any leftover disk, for instance if they were detached from the instance
|
||||||
|
|
@ -462,13 +460,17 @@ module Vmpooler
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
def vm_ready?(_pool_name, vm_name)
|
def vm_ready?(pool_name, vm_name, redis)
|
||||||
|
debug_logger('vm_ready?')
|
||||||
begin
|
begin
|
||||||
# TODO: we could use a healthcheck resource attached to instance
|
# TODO: we could use a healthcheck resource attached to instance
|
||||||
open_socket(vm_name, domain || global_config[:config]['domain'])
|
domain = domain(pool_name)
|
||||||
rescue StandardError => _e
|
open_socket(vm_name, domain)
|
||||||
|
rescue StandardError => e
|
||||||
|
redis.hset("vmpooler__vm__#{vm_name}", 'open_socket_error', e.to_s)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
redis.hdel("vmpooler__vm__#{vm_name}", 'open_socket_error')
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -497,9 +499,6 @@ module Vmpooler
|
||||||
|
|
||||||
debug_logger("trigger async delete_instance #{vm.name}")
|
debug_logger("trigger async delete_instance #{vm.name}")
|
||||||
result = connection.delete_instance(project, zone, vm.name)
|
result = connection.delete_instance(project, zone, vm.name)
|
||||||
vm_pool = vm.labels&.key?('pool') ? vm.labels['pool'] : nil
|
|
||||||
existing_vm = generate_vm_hash(vm, vm_pool)
|
|
||||||
dns_teardown(existing_vm)
|
|
||||||
result_list << result
|
result_list << result
|
||||||
end
|
end
|
||||||
# now check they are done
|
# now check they are done
|
||||||
|
|
@ -560,16 +559,6 @@ module Vmpooler
|
||||||
|
|
||||||
# END BASE METHODS
|
# END BASE METHODS
|
||||||
|
|
||||||
def dns_setup(created_instance)
|
|
||||||
dns = Vmpooler::PoolManager::CloudDns.new(project, dns_zone_resource_name)
|
|
||||||
dns.dns_create_or_replace(created_instance)
|
|
||||||
end
|
|
||||||
|
|
||||||
def dns_teardown(created_instance)
|
|
||||||
dns = Vmpooler::PoolManager::CloudDns.new(project, dns_zone_resource_name)
|
|
||||||
dns.dns_teardown(created_instance)
|
|
||||||
end
|
|
||||||
|
|
||||||
def should_be_ignored(item, allowlist)
|
def should_be_ignored(item, allowlist)
|
||||||
return false if allowlist.nil?
|
return false if allowlist.nil?
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,13 +3,13 @@
|
||||||
# The container tag should closely match what is used in `docker/Dockerfile` in vmpooler-deployment
|
# The container tag should closely match what is used in `docker/Dockerfile` in vmpooler-deployment
|
||||||
#
|
#
|
||||||
# Update Gemfile.lock
|
# Update Gemfile.lock
|
||||||
docker run -it --rm \
|
docker run -t --rm \
|
||||||
-v $(pwd):/app \
|
-v $(pwd):/app \
|
||||||
jruby:9.4.1.0-jdk11 \
|
jruby:9.4.3.0-jdk11 \
|
||||||
/bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends git make netbase && cd /app && gem install bundler && bundle install --jobs 3; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"'
|
/bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends git make netbase && cd /app && gem install bundler && bundle install --jobs 3; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"'
|
||||||
|
|
||||||
# Update Changelog
|
# Update Changelog
|
||||||
docker run -it --rm -e CHANGELOG_GITHUB_TOKEN -v $(pwd):/usr/local/src/your-app \
|
docker run -t --rm -e CHANGELOG_GITHUB_TOKEN -v $(pwd):/usr/local/src/your-app \
|
||||||
githubchangeloggenerator/github-changelog-generator:1.16.2 \
|
githubchangeloggenerator/github-changelog-generator:1.16.2 \
|
||||||
github_changelog_generator --future-release $(grep VERSION lib/vmpooler-provider-gce/version.rb |rev |cut -d "'" -f2 |rev)
|
github_changelog_generator --future-release $(grep VERSION lib/vmpooler-provider-gce/version.rb |rev |cut -d "'" -f2 |rev)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
MockDNS = Struct.new(
|
|
||||||
# https://rubydoc.info/gems/google-cloud-dns/0.35.1/Google/Cloud/Dns
|
|
||||||
:change, :credentials, :project, :record, :zone,
|
|
||||||
keyword_init: true
|
|
||||||
) do
|
|
||||||
def zone(zone)
|
|
||||||
self.zone = zone
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
@ -10,7 +10,6 @@ require 'vmpooler'
|
||||||
require 'redis'
|
require 'redis'
|
||||||
require 'vmpooler/metrics'
|
require 'vmpooler/metrics'
|
||||||
require 'computeservice_helper'
|
require 'computeservice_helper'
|
||||||
require 'dnsservice_helper'
|
|
||||||
|
|
||||||
def project_root_dir
|
def project_root_dir
|
||||||
File.dirname(File.dirname(__FILE__))
|
File.dirname(File.dirname(__FILE__))
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,11 @@ describe 'Vmpooler::PoolManager::Provider::Gce' do
|
||||||
:config:
|
:config:
|
||||||
max_tries: 3
|
max_tries: 3
|
||||||
retry_factor: 10
|
retry_factor: 10
|
||||||
|
:dns_configs:
|
||||||
|
:gcp-clouddns:
|
||||||
|
project: vmpooler-test
|
||||||
|
domain: vmpooler.example.com
|
||||||
|
dns_zone_resource_name: vmpooler-example-com
|
||||||
:providers:
|
:providers:
|
||||||
:gce:
|
:gce:
|
||||||
connection_pool_timeout: 1
|
connection_pool_timeout: 1
|
||||||
|
|
@ -32,6 +37,7 @@ describe 'Vmpooler::PoolManager::Provider::Gce' do
|
||||||
timeout: 10
|
timeout: 10
|
||||||
ready_ttl: 1440
|
ready_ttl: 1440
|
||||||
provider: 'gce'
|
provider: 'gce'
|
||||||
|
dns_config: 'gcp-clouddns'
|
||||||
machine_type: 'zones/#{zone}/machineTypes/e2-micro'
|
machine_type: 'zones/#{zone}/machineTypes/e2-micro'
|
||||||
EOT
|
EOT
|
||||||
)
|
)
|
||||||
|
|
@ -51,8 +57,6 @@ EOT
|
||||||
|
|
||||||
subject { Vmpooler::PoolManager::Provider::Gce.new(config, logger, metrics, redis_connection_pool, 'gce', provider_options) }
|
subject { Vmpooler::PoolManager::Provider::Gce.new(config, logger, metrics, redis_connection_pool, 'gce', provider_options) }
|
||||||
|
|
||||||
before(:each) { allow(subject).to receive(:dns).and_return(MockDNS.new()) }
|
|
||||||
|
|
||||||
describe '#name' do
|
describe '#name' do
|
||||||
it 'should be gce' do
|
it 'should be gce' do
|
||||||
expect(subject.name).to eq('gce')
|
expect(subject.name).to eq('gce')
|
||||||
|
|
@ -61,7 +65,6 @@ EOT
|
||||||
|
|
||||||
describe '#manual tests live' do
|
describe '#manual tests live' do
|
||||||
context 'in itsysops' do
|
context 'in itsysops' do
|
||||||
before(:each) { allow(subject).to receive(:dns).and_call_original }
|
|
||||||
let(:vmname) { "instance-31" }
|
let(:vmname) { "instance-31" }
|
||||||
let(:project) { 'vmpooler-test' }
|
let(:project) { 'vmpooler-test' }
|
||||||
let(:config) { YAML.load(<<~EOT
|
let(:config) { YAML.load(<<~EOT
|
||||||
|
|
@ -69,14 +72,17 @@ EOT
|
||||||
:config:
|
:config:
|
||||||
max_tries: 3
|
max_tries: 3
|
||||||
retry_factor: 10
|
retry_factor: 10
|
||||||
|
:dns_configs:
|
||||||
|
:gcp-clouddns:
|
||||||
|
project: vmpooler-test
|
||||||
|
domain: vmpooler.example.com
|
||||||
|
dns_zone_resource_name: vmpooler-example-com
|
||||||
:providers:
|
:providers:
|
||||||
:gce:
|
:gce:
|
||||||
connection_pool_timeout: 1
|
connection_pool_timeout: 1
|
||||||
project: '#{project}'
|
project: '#{project}'
|
||||||
zone: '#{zone}'
|
zone: '#{zone}'
|
||||||
network_name: 'projects/itsysopsnetworking/global/networks/shared1'
|
network_name: 'projects/itsysopsnetworking/global/networks/shared1'
|
||||||
dns_zone_resource_name: 'vmpooler-test-puppet-net'
|
|
||||||
domain: 'vmpooler-test.puppet.net'
|
|
||||||
:pools:
|
:pools:
|
||||||
- name: '#{poolname}'
|
- name: '#{poolname}'
|
||||||
alias: [ 'mockpool' ]
|
alias: [ 'mockpool' ]
|
||||||
|
|
@ -85,6 +91,7 @@ EOT
|
||||||
timeout: 10
|
timeout: 10
|
||||||
ready_ttl: 1440
|
ready_ttl: 1440
|
||||||
provider: 'gce'
|
provider: 'gce'
|
||||||
|
dns_config: 'gcp-clouddns'
|
||||||
subnetwork_name: 'projects/itsysopsnetworking/regions/us-west1/subnetworks/vmpooler-test'
|
subnetwork_name: 'projects/itsysopsnetworking/regions/us-west1/subnetworks/vmpooler-test'
|
||||||
machine_type: 'zones/#{zone}/machineTypes/e2-micro'
|
machine_type: 'zones/#{zone}/machineTypes/e2-micro'
|
||||||
disk_type: 'pd-ssd'
|
disk_type: 'pd-ssd'
|
||||||
|
|
@ -92,10 +99,6 @@ EOT
|
||||||
) }
|
) }
|
||||||
skip 'gets a vm' do
|
skip 'gets a vm' do
|
||||||
result = subject.create_vm(poolname, vmname)
|
result = subject.create_vm(poolname, vmname)
|
||||||
#result = subject.destroy_vm(poolname, vmname)
|
|
||||||
# subject.get_vm(poolname, vmname)
|
|
||||||
subject.dns_teardown({'name' => vmname})
|
|
||||||
# subject.dns_setup({'name' => vmname, 'ip' => '1.2.3.5'})
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -267,7 +270,6 @@ EOT
|
||||||
result = MockResult.new
|
result = MockResult.new
|
||||||
result.status = 'DONE'
|
result.status = 'DONE'
|
||||||
allow(connection).to receive(:insert_instance).and_return(result)
|
allow(connection).to receive(:insert_instance).and_return(result)
|
||||||
allow(subject).to receive(:dns_setup).and_return(true)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should return a hash' do
|
it 'should return a hash' do
|
||||||
|
|
@ -314,7 +316,6 @@ EOT
|
||||||
result.status = 'DONE'
|
result.status = 'DONE'
|
||||||
allow(subject).to receive(:wait_for_operation).and_return(result)
|
allow(subject).to receive(:wait_for_operation).and_return(result)
|
||||||
allow(connection).to receive(:delete_instance).and_return(result)
|
allow(connection).to receive(:delete_instance).and_return(result)
|
||||||
allow(subject).to receive(:dns_teardown).and_return(true)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should return true' do
|
it 'should return true' do
|
||||||
|
|
@ -349,14 +350,20 @@ EOT
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#vm_ready?' do
|
describe '#vm_ready?' do
|
||||||
let(:domain) { nil }
|
let(:domain) { 'vmpooler.example.com' }
|
||||||
|
before(:each) do
|
||||||
|
allow(subject).to receive(:domain).and_return('vmpooler.example.com')
|
||||||
|
end
|
||||||
|
|
||||||
context 'When a VM is ready' do
|
context 'When a VM is ready' do
|
||||||
before(:each) do
|
before(:each) do
|
||||||
expect(subject).to receive(:open_socket).with(vmname, domain)
|
expect(subject).to receive(:open_socket).with(vmname, domain)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should return true' do
|
it 'should return true' do
|
||||||
expect(subject.vm_ready?(poolname, vmname)).to be true
|
redis_connection_pool.with_metrics do |redis|
|
||||||
|
expect(subject.vm_ready?(poolname, vmname, redis)).to be true
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -366,7 +373,9 @@ EOT
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should return false' do
|
it 'should return false' do
|
||||||
expect(subject.vm_ready?(poolname, vmname)).to be false
|
redis_connection_pool.with_metrics do |redis|
|
||||||
|
expect(subject.vm_ready?(poolname, vmname, redis)).to be false
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -586,7 +595,6 @@ EOT
|
||||||
|
|
||||||
before(:each) do
|
before(:each) do
|
||||||
allow(subject).to receive(:connect_to_gce).and_return(connection)
|
allow(subject).to receive(:connect_to_gce).and_return(connection)
|
||||||
allow(subject).to receive(:dns_teardown).and_return(true)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'with empty allowlist' do
|
context 'with empty allowlist' do
|
||||||
|
|
|
||||||
|
|
@ -3,5 +3,5 @@
|
||||||
# The container tag should closely match what is used in `docker/Dockerfile` in vmpooler-deployment
|
# The container tag should closely match what is used in `docker/Dockerfile` in vmpooler-deployment
|
||||||
docker run -it --rm \
|
docker run -it --rm \
|
||||||
-v $(pwd):/app \
|
-v $(pwd):/app \
|
||||||
jruby:9.4.1.0-jdk11 \
|
jruby:9.4.3.0-jdk11 \
|
||||||
/bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends git make netbase && cd /app && gem install bundler && bundle install --jobs 3 && bundle update; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"'
|
/bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends git make netbase && cd /app && gem install bundler && bundle install --jobs 3 && bundle update; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"'
|
||||||
|
|
|
||||||
|
|
@ -16,9 +16,8 @@ Gem::Specification.new do |s|
|
||||||
s.files = Dir[ "lib/**/*" ]
|
s.files = Dir[ "lib/**/*" ]
|
||||||
s.require_paths = ["lib"]
|
s.require_paths = ["lib"]
|
||||||
s.add_dependency "google-apis-compute_v1", "~> 0.14"
|
s.add_dependency "google-apis-compute_v1", "~> 0.14"
|
||||||
s.add_dependency "googleauth", ">= 0.16.2", "< 1.3.0"
|
s.add_dependency "googleauth", ">= 0.16.2", "< 1.4.0"
|
||||||
s.add_dependency "google-cloud-dns", "~> 0.35.1"
|
s.add_dependency 'vmpooler', '~> 3.0'
|
||||||
s.add_dependency 'vmpooler', '>= 1.3.0', '~> 2.3'
|
|
||||||
|
|
||||||
# Testing dependencies
|
# Testing dependencies
|
||||||
s.add_development_dependency 'climate_control', '>= 0.2.0'
|
s.add_development_dependency 'climate_control', '>= 0.2.0'
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue