Adding the cloud DNS API library and related methods

we setup DNS when a VM is created and tear it down when a VM is deleted
the DNS zone should exist already and is referenced by a provider setting
the dns zone is also set in order to use it for vm_ready? instead of the global
domain
instances have a label that identifies which project they belong to, so
it can be used for FW rules
This commit is contained in:
Samuel Beaulieu 2021-12-29 08:13:32 -06:00
parent f6ec318b2d
commit daa55fe5b8
No known key found for this signature in database
GPG key ID: 12030F74136D0F34
9 changed files with 167 additions and 12 deletions

View file

@ -11,6 +11,7 @@ describe 'Vmpooler::PoolManager::Provider::Gce' do
let(:metrics) { Vmpooler::Metrics::DummyStatsd.new }
let(:poolname) { 'debian-9' }
let(:provider_options) { { 'param' => 'value' } }
# let(:project) { 'vmpooler-test' }
let(:project) { 'dio-samuel-dev' }
let(:zone) { 'us-west1-b' }
let(:config) { YAML.load(<<-EOT
@ -23,7 +24,10 @@ describe 'Vmpooler::PoolManager::Provider::Gce' do
connection_pool_timeout: 1
project: '#{project}'
zone: '#{zone}'
network_name: 'global/networks/default'
network_name: global/networks/default
# network_name: 'projects/itsysopsnetworking/global/networks/shared1'
dns_zone_resource_name: 'example-com'
dns_zone: 'example.com'
:pools:
- name: '#{poolname}'
alias: [ 'mockpool' ]
@ -32,13 +36,13 @@ describe 'Vmpooler::PoolManager::Provider::Gce' do
timeout: 10
ready_ttl: 1440
provider: 'gce'
network_name: 'default'
# subnetwork_name: 'projects/itsysopsnetworking/regions/us-west1/subnetworks/vmpooler-test'
machine_type: 'zones/#{zone}/machineTypes/e2-micro'
EOT
)
}
let(:vmname) { 'vm16' }
let(:vmname) { 'vm17' }
let(:connection) { MockComputeServiceConnection.new }
let(:redis_connection_pool) do
Vmpooler::PoolManager::GenericConnectionPool.new(
@ -80,11 +84,44 @@ EOT
# result = subject.create_snapshot(poolname, vmname, "sams")
# result = subject.revert_snapshot(poolname, vmname, "sams")
# puts subject.get_vm(poolname, vmname)
result = subject.create_vm(poolname, vmname)
result = subject.destroy_vm(poolname, vmname)
end
skip 'debug' do
puts subject.purge_unconfigured_resources(['foo', '', 'blah'])
context 'in itsysops' do
let(:vmname) { "instance-10" }
let(:project) { 'vmpooler-test' }
let(:config) { YAML.load(<<-EOT
---
:config:
max_tries: 3
retry_factor: 10
:providers:
:gce:
connection_pool_timeout: 1
project: '#{project}'
zone: '#{zone}'
network_name: 'projects/itsysopsnetworking/global/networks/shared1'
dns_zone_resource_name: 'test-vmpooler-puppet-net'
dns_zone: 'test.vmpooler.puppet.net'
:pools:
- name: '#{poolname}'
alias: [ 'mockpool' ]
template: 'projects/debian-cloud/global/images/family/debian-9'
size: 5
timeout: 10
ready_ttl: 1440
provider: 'gce'
subnetwork_name: 'projects/itsysopsnetworking/regions/us-west1/subnetworks/vmpooler-test'
machine_type: 'zones/#{zone}/machineTypes/e2-micro'
EOT
) }
skip 'gets a vm' do
result = subject.create_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

View file

@ -0,0 +1,9 @@
require 'rspec'
describe 'VmpoolerProviderGce' do
context 'when creating class ' do
it 'sets a version' do
expect(VmpoolerProviderGce::VERSION).not_to be_nil
end
end
end