beaker-google 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -13
- data/.github/dependabot.yml +8 -0
- data/.github/workflows/snyk_scan.yaml +23 -0
- data/CODEOWNERS +2 -0
- data/Gemfile +1 -1
- data/README.md +27 -9
- data/beaker-google.gemspec +7 -3
- data/docs/manual.md +122 -0
- data/lib/beaker/hypervisor/google.rb +1 -1
- data/lib/beaker/hypervisor/google_compute.rb +87 -43
- data/lib/beaker/hypervisor/google_compute_helper.rb +411 -191
- data/lib/beaker-google/version.rb +1 -1
- metadata +33 -45
- data/google_compute_engine.md +0 -41
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
NDkzYzcyNDQ3OWVhZGY2NzdjOGNmZmRkYTY4NzE2NmQxZmY5YjM0Ng==
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 38ff789a0865a3b6dd349f7543b6097b1f79e7b957744ba51d855e3460da4530
|
4
|
+
data.tar.gz: f812dc39fdb14f8a22ed9ffb735a2c2df12f58772e9287a7ec0b48d9e6be3fa7
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
YzQ4ZmFiZWI4NzQ0ZTFkYjEyZjlhY2ZlZDk4ZWZhMjRhN2FlOTY0NGFkODE2
|
11
|
-
NDE0ZDc2MGMwMDcyNDM0ZGIwNmVlZWUxMjNhMGY3MzM2MTAwNTY=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
MzMwNzc3MGY2NzNmZjQyMmY5N2ViZTk3NWUzZTAxN2JiMzBlM2MxNjAwZmE5
|
14
|
-
NWVlNGJiODY0ZWM3YzdkYTJjZWNiMGUwMjMyM2RjN2YxZjU2NzcyZjZlODMz
|
15
|
-
NDczYWY5OGE1YWQ3NmNlYTI4MjcyZWFkNWE1OGNjOWVkOWQyNDY=
|
6
|
+
metadata.gz: 81f7d94daad049188c62d4f4897a688e6b0987f514f10c8075a1f7cd55e552a792976ceb06ce3bf0143f760114c49860468db578dcab268e7331cac343754ad1
|
7
|
+
data.tar.gz: 9fadfb95152db012aaa528c628229d8ff5378f9cd17a0f3e41773a941eddbdd7dacca2675ee8382eac9db0b3148fef1027adc87c563d50f32d8fef07929ccf07
|
@@ -0,0 +1,23 @@
|
|
1
|
+
name: Snyk Scan
|
2
|
+
on:
|
3
|
+
workflow_dispatch:
|
4
|
+
push:
|
5
|
+
branches:
|
6
|
+
- master
|
7
|
+
jobs:
|
8
|
+
security:
|
9
|
+
runs-on: ubuntu-latest
|
10
|
+
steps:
|
11
|
+
- uses: actions/checkout@master
|
12
|
+
- name: setup ruby
|
13
|
+
uses: ruby/setup-ruby@v1
|
14
|
+
with:
|
15
|
+
ruby-version: 2.5.9
|
16
|
+
- name: create lock
|
17
|
+
run: bundle lock
|
18
|
+
- name: Run Snyk to check for vulnerabilities
|
19
|
+
uses: snyk/actions/ruby@master
|
20
|
+
env:
|
21
|
+
SNYK_TOKEN: ${{ secrets.SNYK_DIO_KEY }}
|
22
|
+
with:
|
23
|
+
command: monitor
|
data/CODEOWNERS
ADDED
data/Gemfile
CHANGED
@@ -18,7 +18,7 @@ end
|
|
18
18
|
# We don't put beaker in as a test dependency because we
|
19
19
|
# don't want to create a transitive dependency
|
20
20
|
group :acceptance_testing do
|
21
|
-
gem "beaker", *location_for(ENV['BEAKER_VERSION'] || '~>
|
21
|
+
gem "beaker", *location_for(ENV['BEAKER_VERSION'] || '~> 4.0')
|
22
22
|
end
|
23
23
|
|
24
24
|
|
data/README.md
CHANGED
@@ -1,21 +1,39 @@
|
|
1
1
|
# beaker-google
|
2
2
|
|
3
|
-
Beaker library to use
|
3
|
+
Beaker library to use the Google hypervisor
|
4
4
|
|
5
5
|
# How to use this wizardry
|
6
6
|
|
7
|
-
This is a gem that allows you to use hosts with [google compute](google_compute_engine.md) hypervisor with [
|
7
|
+
This is a gem that allows you to use hosts with [google compute](google_compute_engine.md) hypervisor with [Beaker](https://github.com/puppetlabs/beaker).
|
8
8
|
|
9
|
-
|
9
|
+
See the [documentation](docs/manual.md) for the full manual.
|
10
10
|
|
11
|
-
|
11
|
+
Beaker will automatically load the appropriate hypervisors for any given hosts file, so as long as your project dependencies are satisfied there's nothing else to do. No need to `require` this library in your tests.
|
12
12
|
|
13
|
-
|
13
|
+
## With Beaker 3.x
|
14
|
+
This gem is already included as [beaker dependency](https://github.com/puppetlabs/beaker/blob/master/beaker.gemspec)
|
15
|
+
for you, so you don't need to do anything special to use this gem's
|
16
|
+
functionality with Beaker.
|
14
17
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
18
|
+
This library is included as a dependency of Beaker 3.x versions, so there's nothing to do.
|
19
|
+
|
20
|
+
## With Beaker 4.x
|
21
|
+
|
22
|
+
As of Beaker 4.0, all hypervisor and DSL extension libraries have been removed and are no longer dependencies. In order to use a specific hypervisor or DSL extension library in your project, you will need to include them alongside Beaker in your Gemfile or project.gemspec. E.g.
|
23
|
+
|
24
|
+
~~~ruby
|
25
|
+
# Gemfile
|
26
|
+
gem 'beaker', '~>4.0'
|
27
|
+
gem 'beaker-aws'
|
28
|
+
# project.gemspec
|
29
|
+
s.add_runtime_dependency 'beaker', '~>4.0'
|
30
|
+
s.add_runtime_dependency 'beaker-aws'
|
31
|
+
~~~
|
32
|
+
|
33
|
+
In Beaker's next major version, the requirement for `beaker-google` will be
|
34
|
+
pulled from that repo. When that happens, then the usage pattern will change.
|
35
|
+
In order to use this then, you'll need to include `beaker-google` as a dependency
|
36
|
+
right next to beaker itself.
|
19
37
|
|
20
38
|
# Contributing
|
21
39
|
|
data/beaker-google.gemspec
CHANGED
@@ -20,19 +20,23 @@ Gem::Specification.new do |s|
|
|
20
20
|
# Testing dependencies
|
21
21
|
s.add_development_dependency 'rspec', '~> 3.0'
|
22
22
|
s.add_development_dependency 'rspec-its'
|
23
|
-
|
23
|
+
# pin fakefs for Ruby < 2.3
|
24
|
+
if RUBY_VERSION < "2.3"
|
25
|
+
s.add_development_dependency 'fakefs', '~> 0.6', '< 0.14'
|
26
|
+
else
|
27
|
+
s.add_development_dependency 'fakefs', '~> 0.6'
|
28
|
+
end
|
24
29
|
s.add_development_dependency 'rake', '~> 10.1'
|
25
30
|
s.add_development_dependency 'simplecov'
|
26
31
|
s.add_development_dependency 'pry', '~> 0.10'
|
27
32
|
|
28
33
|
# Documentation dependencies
|
29
34
|
s.add_development_dependency 'yard'
|
30
|
-
s.add_development_dependency 'markdown'
|
31
35
|
s.add_development_dependency 'thin'
|
32
36
|
|
33
37
|
# Run time dependencies
|
34
38
|
s.add_runtime_dependency 'stringify-hash', '~> 0.0.0'
|
35
|
-
s.add_runtime_dependency 'google-api-client', '~> 0.
|
39
|
+
s.add_runtime_dependency 'google-api-client', '~> 0.8'
|
36
40
|
|
37
41
|
end
|
38
42
|
|
data/docs/manual.md
ADDED
@@ -0,0 +1,122 @@
|
|
1
|
+
# Using the Google Compute Engine Provisioner
|
2
|
+
|
3
|
+
This [Beaker](https://github.com/puppetlabs/beaker) provisioner manages instances from pre-existing [Google Compute Engine](https://cloud.google.com/compute) images.
|
4
|
+
|
5
|
+
Currently supported [GCE images](https://cloud.google.com/compute/docs/images#os-compute-support) include:
|
6
|
+
* Debian
|
7
|
+
* CentOS
|
8
|
+
* Red Hat Enterprise Linux
|
9
|
+
|
10
|
+
## Prerequisites
|
11
|
+
|
12
|
+
* A [Google Compute Engine project](https://cloud.google.com/resource-manager/docs/creating-managing-projects)
|
13
|
+
* An active [service account](https://cloud.google.com/compute/docs/access/service-accounts)
|
14
|
+
to your Google Compute Engine project, along with the following
|
15
|
+
information:
|
16
|
+
* The service account **private key file** (named xxx-privatekey.p12).
|
17
|
+
* The service account **email address** (named xxx@developer.gserviceaccount.com).
|
18
|
+
* The service account **password**.
|
19
|
+
* A **ssh keypair**, [set up for GCE](https://developers.google.com/compute/docs/console#sshkeys)
|
20
|
+
* Load the private key into your `ssh-agent` prior to running Beaker (or
|
21
|
+
leave off a password, but this is not recommended)
|
22
|
+
* Name the pair `google_compute_engine`
|
23
|
+
* You can tell Beaker to use a different public key by setting `BEAKER_gce_ssh_public_key` to the path of your public key file
|
24
|
+
* Place the [public key](https://git-scm.com/book/gr/v2/Git-on-the-Server-Generating-Your-SSH-Public-Key) in your Google Compute Engine [project metadata](https://cloud.google.com/compute/docs/storing-retrieving-metadata)
|
25
|
+
* `key`: `sshKeys`
|
26
|
+
* `value` is the contents of your `google_compute.pub` with `google_compute:` _prepended_, eg: `google_compute:ssh-rsaAAA(...) user@machine.local`
|
27
|
+
|
28
|
+
## Setting Up Beaker
|
29
|
+
|
30
|
+
You are now ready to set up the Beaker [nodeset](https://github.com/puppetlabs/beaker-rspec#typical-workflow) for your GCE instances
|
31
|
+
|
32
|
+
### Example GCE Hosts File
|
33
|
+
|
34
|
+
```yaml
|
35
|
+
HOSTS:
|
36
|
+
debian-7-master:
|
37
|
+
roles:
|
38
|
+
- server
|
39
|
+
- master
|
40
|
+
- agent
|
41
|
+
platform: debian-7-x86_64
|
42
|
+
hypervisor: google
|
43
|
+
# The GCE image name to use
|
44
|
+
image: debian-7-XXXX
|
45
|
+
|
46
|
+
centos-6-agent:
|
47
|
+
roles:
|
48
|
+
- agent
|
49
|
+
platform: el-6-x86_64
|
50
|
+
hypervisor: google
|
51
|
+
# The GCE image name to use
|
52
|
+
image: centos-6-XXXX
|
53
|
+
# The GCE Machine type to use
|
54
|
+
gce_machine_type: n1-highmem-2
|
55
|
+
|
56
|
+
redhat-7-agent:
|
57
|
+
roles:
|
58
|
+
- agent
|
59
|
+
platform: el-7-x86_64
|
60
|
+
hypervisor: google
|
61
|
+
# The GCE image name to use
|
62
|
+
image: redhat-7-XXXX
|
63
|
+
|
64
|
+
CONFIG:
|
65
|
+
type: aio
|
66
|
+
|
67
|
+
# Optional: The number of seconds to attempt execution and then quit
|
68
|
+
timeout: 10
|
69
|
+
|
70
|
+
# You don't have to specify this if you set the environment variable
|
71
|
+
# BEAKER_gce_project
|
72
|
+
gce_project: google-compute-project-name
|
73
|
+
|
74
|
+
# Service account key
|
75
|
+
#
|
76
|
+
# If not defined, this key will try to be found at
|
77
|
+
# $HOME/.beaker/gce/project-name.p12
|
78
|
+
#
|
79
|
+
# You can also specify the key using the environment variable
|
80
|
+
# BEAKER_gce_keyfile
|
81
|
+
gce_keyfile: /path/to/*****-privatekey.p12
|
82
|
+
|
83
|
+
# This is almost always the same!
|
84
|
+
#
|
85
|
+
# You don't have to specify this unless you have a custom 'gce_password'
|
86
|
+
#
|
87
|
+
# You can also specify this by setting the environment variable
|
88
|
+
# BEAKER_gce_password
|
89
|
+
gce_password: notasecret
|
90
|
+
|
91
|
+
# Service account email
|
92
|
+
#
|
93
|
+
# You don't have to specify this if you set the environment variable
|
94
|
+
# BEAKER_gce_email
|
95
|
+
gce_email: *********@developer.gserviceaccount.com
|
96
|
+
```
|
97
|
+
|
98
|
+
Google Compute cloud instances and disks are deleted after test runs, but it is
|
99
|
+
up to the owner of the Google Compute Engine project to ensure that any zombie
|
100
|
+
instances/disks are properly removed should Beaker fail during cleanup.
|
101
|
+
|
102
|
+
**NOTE:** If zombie resources are left in GCE the code helps you identify runs
|
103
|
+
that have not been cleaned up by prefixing all of the assets with the **same**
|
104
|
+
identifier that follows the pattern of `beaker-TIMESTAMP`.
|
105
|
+
|
106
|
+
### Tips and Tricks
|
107
|
+
|
108
|
+
To most easily use this plugin with GCE projects, you may want to do the following:
|
109
|
+
|
110
|
+
1. `mkdir -p $HOME/.beaker/gce`
|
111
|
+
2. `cd $HOME/.beaker/gce`
|
112
|
+
3. Add the following to a file named `config` with your values in place
|
113
|
+
|
114
|
+
```bash
|
115
|
+
export BEAKER_gce_ssh_public_key="$HOME/.beaker/gce/rsa.pub"
|
116
|
+
export BEAKER_gce_project='my-beaker-tests'
|
117
|
+
export BEAKER_gce_keyfile="$HOME/.beaker/Beaker_Testing.p12"
|
118
|
+
export BEAKER_gce_email='myuser@my-beaker-tests.iam.gserviceaccount.com'
|
119
|
+
```
|
120
|
+
|
121
|
+
4. Copy your testing account `p12` file into `$HOME/.beaker/gce/Beaker_Testing.p12`
|
122
|
+
5. Run your test after running `source $HOME/.beaker/gce/config`
|
@@ -1,33 +1,65 @@
|
|
1
1
|
require 'time'
|
2
2
|
|
3
3
|
module Beaker
|
4
|
-
|
4
|
+
|
5
|
+
# Beaker support for the Google Compute Engine.
|
5
6
|
class GoogleCompute < Beaker::Hypervisor
|
6
7
|
|
7
8
|
SLEEPWAIT = 5
|
8
|
-
|
9
|
+
|
10
|
+
# Hours before an instance is considered a zombie
|
9
11
|
ZOMBIE = 3
|
10
12
|
|
11
|
-
#
|
12
|
-
|
13
|
+
# Do some reasonable sleuthing on the SSH public key for GCE
|
14
|
+
def find_google_ssh_public_key
|
15
|
+
keyfile = ENV.fetch('BEAKER_gce_ssh_public_key', File.join(ENV['HOME'], '.ssh', 'google_compute_engine.pub'))
|
16
|
+
|
17
|
+
if @options[:gce_ssh_public_key] && !File.exist?(keyfile)
|
18
|
+
keyfile = @options[:gce_ssh_public_key]
|
19
|
+
end
|
20
|
+
|
21
|
+
raise("Could not find GCE Public SSH Key at '#{keyfile}'") unless File.exist?(keyfile)
|
22
|
+
|
23
|
+
return keyfile
|
24
|
+
end
|
25
|
+
|
26
|
+
# Create the array of metaData, each member being a hash with a :key and a
|
27
|
+
# :value. Sets :department, :project and :jenkins_build_url.
|
13
28
|
def format_metadata
|
14
29
|
[ {:key => :department, :value => @options[:department]},
|
15
30
|
{:key => :project, :value => @options[:project]},
|
16
|
-
{:key => :jenkins_build_url, :value => @options[:jenkins_build_url]}
|
31
|
+
{:key => :jenkins_build_url, :value => @options[:jenkins_build_url]},
|
32
|
+
{:key => :sshKeys, :value => "google_compute:#{File.read(find_google_ssh_public_key).strip}" }
|
33
|
+
].delete_if { |member| member[:value].nil? or member[:value].empty?}
|
17
34
|
end
|
18
35
|
|
19
|
-
#Create a new instance of the Google Compute Engine hypervisor object
|
20
|
-
|
21
|
-
#
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
36
|
+
# Create a new instance of the Google Compute Engine hypervisor object
|
37
|
+
#
|
38
|
+
# @param [<Host>] google_hosts The Array of google hosts to provision, may
|
39
|
+
# ONLY be of platforms /centos-*/, /debian-*/, /rhel-*/, /suse-*/. Only
|
40
|
+
# supports the Google Compute provided templates.
|
41
|
+
#
|
42
|
+
# @param [Hash{Symbol=>String}] options The options hash containing
|
43
|
+
# configuration values @option options [String] :gce_project The Google
|
44
|
+
# Compute Project name to connect to
|
45
|
+
#
|
46
|
+
# @option options [String] :gce_keyfile The location of the Google Compute
|
47
|
+
# service account keyfile
|
48
|
+
#
|
49
|
+
# @option options [String] :gce_password The password for the Google Compute
|
50
|
+
# service account key
|
51
|
+
#
|
52
|
+
# @option options [String] :gce_email The email address for the Google
|
53
|
+
# Compute service account
|
54
|
+
#
|
55
|
+
# @option options [String] :gce_machine_type A Google Compute machine type
|
56
|
+
# used to create instances, defaults to n1-highmem-2
|
57
|
+
#
|
58
|
+
# @option options [Integer] :timeout The amount of time to attempt execution
|
59
|
+
# before quiting and exiting with failure
|
29
60
|
def initialize(google_hosts, options)
|
30
61
|
require 'beaker/hypervisor/google_compute_helper'
|
62
|
+
|
31
63
|
@options = options
|
32
64
|
@logger = options[:logger]
|
33
65
|
@hosts = google_hosts
|
@@ -35,66 +67,77 @@ module Beaker
|
|
35
67
|
@gce_helper = GoogleComputeHelper.new(options)
|
36
68
|
end
|
37
69
|
|
38
|
-
#Create and configure virtual machines in the Google Compute Engine,
|
39
|
-
#
|
70
|
+
# Create and configure virtual machines in the Google Compute Engine,
|
71
|
+
# including their associated disks and firewall rules
|
40
72
|
def provision
|
41
|
-
try = 1
|
42
73
|
attempts = @options[:timeout].to_i / SLEEPWAIT
|
43
74
|
start = Time.now
|
44
75
|
|
45
|
-
|
76
|
+
test_group_identifier = "beaker-#{start.to_i}-"
|
77
|
+
|
78
|
+
# get machineType resource, used by all instances
|
46
79
|
machineType = @gce_helper.get_machineType(start, attempts)
|
47
80
|
|
48
|
-
#set firewall to open pe ports
|
81
|
+
# set firewall to open pe ports
|
49
82
|
network = @gce_helper.get_network(start, attempts)
|
50
|
-
@firewall = generate_host_name
|
83
|
+
@firewall = test_group_identifier + generate_host_name
|
51
84
|
@gce_helper.create_firewall(@firewall, network, start, attempts)
|
52
85
|
|
53
86
|
@logger.debug("Created Google Compute firewall #{@firewall}")
|
54
87
|
|
55
88
|
|
56
89
|
@hosts.each do |host|
|
57
|
-
|
90
|
+
if host[:image]
|
91
|
+
gplatform = host[:image]
|
92
|
+
elsif host[:platform]
|
93
|
+
gplatform = Platform.new(host[:platform])
|
94
|
+
else
|
95
|
+
raise('You must specify either :image or :platform, or both as necessary')
|
96
|
+
end
|
97
|
+
|
58
98
|
img = @gce_helper.get_latest_image(gplatform, start, attempts)
|
59
|
-
|
99
|
+
|
100
|
+
unique_host_id = test_group_identifier + generate_host_name
|
101
|
+
|
102
|
+
host['diskname'] = unique_host_id
|
60
103
|
disk = @gce_helper.create_disk(host['diskname'], img, start, attempts)
|
61
104
|
@logger.debug("Created Google Compute disk for #{host.name}: #{host['diskname']}")
|
62
105
|
|
63
|
-
#create new host name
|
64
|
-
host['vmhostname'] =
|
106
|
+
# create new host name
|
107
|
+
host['vmhostname'] = unique_host_id
|
65
108
|
#add a new instance of the image
|
66
109
|
instance = @gce_helper.create_instance(host['vmhostname'], img, machineType, disk, start, attempts)
|
67
110
|
@logger.debug("Created Google Compute instance for #{host.name}: #{host['vmhostname']}")
|
68
111
|
|
69
|
-
#add metadata to instance, if there is any to set
|
112
|
+
# add metadata to instance, if there is any to set
|
70
113
|
mdata = format_metadata
|
71
|
-
|
114
|
+
unless mdata.empty?
|
72
115
|
@gce_helper.setMetadata_on_instance(host['vmhostname'], instance['metadata']['fingerprint'],
|
73
116
|
mdata,
|
74
117
|
start, attempts)
|
75
118
|
@logger.debug("Added tags to Google Compute instance #{host.name}: #{host['vmhostname']}")
|
76
119
|
end
|
77
120
|
|
78
|
-
#get ip for this host
|
121
|
+
# get ip for this host
|
79
122
|
host['ip'] = instance['networkInterfaces'][0]['accessConfigs'][0]['natIP']
|
80
123
|
|
81
|
-
#configure ssh
|
124
|
+
# configure ssh
|
82
125
|
default_user = host['user']
|
83
126
|
host['user'] = 'google_compute'
|
84
127
|
|
85
|
-
disable_se_linux(host, @options)
|
86
128
|
copy_ssh_to_root(host, @options)
|
87
129
|
enable_root_login(host, @options)
|
88
130
|
host['user'] = default_user
|
89
131
|
|
90
|
-
#shut down connection, will reconnect on next exec
|
132
|
+
# shut down connection, will reconnect on next exec
|
91
133
|
host.close
|
92
134
|
|
93
135
|
@logger.debug("Instance ready: #{host['vmhostname']} for #{host.name}}")
|
94
136
|
end
|
95
137
|
end
|
96
138
|
|
97
|
-
#Shutdown and destroy virtual machines in the Google Compute Engine,
|
139
|
+
# Shutdown and destroy virtual machines in the Google Compute Engine,
|
140
|
+
# including their associated disks and firewall rules
|
98
141
|
def cleanup()
|
99
142
|
attempts = @options[:timeout].to_i / SLEEPWAIT
|
100
143
|
start = Time.now
|
@@ -110,18 +153,18 @@ module Beaker
|
|
110
153
|
|
111
154
|
end
|
112
155
|
|
113
|
-
#Shutdown and destroy Google Compute instances (including their associated
|
114
|
-
#that have been alive longer than ZOMBIE hours.
|
156
|
+
# Shutdown and destroy Google Compute instances (including their associated
|
157
|
+
# disks and firewall rules) that have been alive longer than ZOMBIE hours.
|
115
158
|
def kill_zombies(max_age = ZOMBIE)
|
116
159
|
now = start = Time.now
|
117
160
|
attempts = @options[:timeout].to_i / SLEEPWAIT
|
118
161
|
|
119
|
-
#get rid of old instances
|
162
|
+
# get rid of old instances
|
120
163
|
instances = @gce_helper.list_instances(start, attempts)
|
121
164
|
if instances
|
122
165
|
instances.each do |instance|
|
123
166
|
created = Time.parse(instance['creationTimestamp'])
|
124
|
-
alive = (now - created )
|
167
|
+
alive = (now - created )/60/60
|
125
168
|
if alive >= max_age
|
126
169
|
#kill it with fire!
|
127
170
|
@logger.debug("Deleting zombie instance #{instance['name']}")
|
@@ -131,14 +174,16 @@ module Beaker
|
|
131
174
|
else
|
132
175
|
@logger.debug("No zombie instances found")
|
133
176
|
end
|
134
|
-
|
177
|
+
|
178
|
+
# get rid of old disks
|
135
179
|
disks = @gce_helper.list_disks(start, attempts)
|
136
180
|
if disks
|
137
181
|
disks.each do |disk|
|
138
182
|
created = Time.parse(disk['creationTimestamp'])
|
139
|
-
alive = (now - created )
|
183
|
+
alive = (now - created )/60/60
|
140
184
|
if alive >= max_age
|
141
|
-
|
185
|
+
|
186
|
+
# kill it with fire!
|
142
187
|
@logger.debug("Deleting zombie disk #{disk['name']}")
|
143
188
|
@gce_helper.delete_disk( disk['name'], start, attempts )
|
144
189
|
end
|
@@ -146,10 +191,11 @@ module Beaker
|
|
146
191
|
else
|
147
192
|
@logger.debug("No zombie disks found")
|
148
193
|
end
|
149
|
-
|
194
|
+
|
195
|
+
# get rid of non-default firewalls
|
150
196
|
firewalls = @gce_helper.list_firewalls( start, attempts)
|
151
197
|
|
152
|
-
if firewalls
|
198
|
+
if firewalls && !firewalls.empty?
|
153
199
|
firewalls.each do |firewall|
|
154
200
|
@logger.debug("Deleting non-default firewall #{firewall['name']}")
|
155
201
|
@gce_helper.delete_firewall( firewall['name'], start, attempts )
|
@@ -157,8 +203,6 @@ module Beaker
|
|
157
203
|
else
|
158
204
|
@logger.debug("No zombie firewalls found")
|
159
205
|
end
|
160
|
-
|
161
206
|
end
|
162
|
-
|
163
207
|
end
|
164
208
|
end
|