mirror of
https://github.com/puppetlabs/vmpooler-provider-gce.git
synced 2026-01-25 19:18:40 -05:00
fix dns_setup as zone was already a method
also changed from setting the project name in the instance labels to a instance tag aka network tag, as the setup for allowing traffic in the FW is bassed on tag not label
This commit is contained in:
parent
2cb2550aca
commit
83770acd89
3 changed files with 63 additions and 57 deletions
|
|
@ -60,6 +60,7 @@ module Vmpooler
|
||||||
|
|
||||||
def dns
|
def dns
|
||||||
@dns ||= Google::Cloud::Dns.new(project_id: project)
|
@dns ||= Google::Cloud::Dns.new(project_id: project)
|
||||||
|
@dns
|
||||||
end
|
end
|
||||||
|
|
||||||
# main configuration options
|
# main configuration options
|
||||||
|
|
@ -196,7 +197,8 @@ module Vmpooler
|
||||||
machine_type: pool['machine_type'],
|
machine_type: pool['machine_type'],
|
||||||
disks: [disk],
|
disks: [disk],
|
||||||
network_interfaces: [network_interfaces],
|
network_interfaces: [network_interfaces],
|
||||||
labels: { 'vm' => new_vmname, 'pool' => pool_name, project => nil }
|
labels: { 'vm' => new_vmname, 'pool' => pool_name },
|
||||||
|
tags: Google::Apis::ComputeV1::Tags.new(items: [project])
|
||||||
)
|
)
|
||||||
|
|
||||||
debug_logger('trigger insert_instance')
|
debug_logger('trigger insert_instance')
|
||||||
|
|
@ -555,27 +557,28 @@ module Vmpooler
|
||||||
# END BASE METHODS
|
# END BASE METHODS
|
||||||
|
|
||||||
def dns_setup(created_instance)
|
def dns_setup(created_instance)
|
||||||
zone = dns.zone dns_zone_resource_name if dns_zone_resource_name
|
dns_zone = dns.zone(dns_zone_resource_name) if dns_zone_resource_name
|
||||||
return unless zone && created_instance && created_instance['name'] && created_instance['ip']
|
return unless dns_zone && created_instance && created_instance['name'] && created_instance['ip']
|
||||||
|
|
||||||
name = created_instance['name']
|
name = created_instance['name']
|
||||||
begin
|
begin
|
||||||
change = zone.add name, 'A', 60, [created_instance['ip']]
|
change = dns_zone.add(name, 'A', 60, [created_instance['ip']])
|
||||||
debug_logger("#{change.id} - #{change.started_at} - #{change.status}") if change
|
debug_logger("#{change.id} - #{change.started_at} - #{change.status} DNS address added") if change
|
||||||
rescue AlreadyExistsError => _e
|
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.
|
# 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
|
# the error is Google::Cloud::AlreadyExistsError: alreadyExists: The resource 'entity.change.additions[0]' named 'instance-8.test.vmpooler.net. (A)' already exists
|
||||||
zone.replace(name, 'A', 60, [created_instance['ip']])
|
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
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def dns_teardown(created_instance)
|
def dns_teardown(created_instance)
|
||||||
zone = dns.zone dns_zone_resource_name if dns_zone_resource_name
|
dns_zone = dns.zone(dns_zone_resource_name) if dns_zone_resource_name
|
||||||
return unless zone && created_instance
|
return unless dns_zone && created_instance
|
||||||
|
|
||||||
name = created_instance['name']
|
name = created_instance['name']
|
||||||
change = zone.remove name, 'A'
|
change = dns_zone.remove(name, 'A')
|
||||||
debug_logger("#{change.id} - #{change.started_at} - #{change.status}") if change
|
debug_logger("#{change.id} - #{change.started_at} - #{change.status} DNS address removed") if change
|
||||||
end
|
end
|
||||||
|
|
||||||
def should_be_ignored(item, allowlist)
|
def should_be_ignored(item, allowlist)
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ includedPermissions:
|
||||||
- compute.instances.get
|
- compute.instances.get
|
||||||
- compute.instances.list
|
- compute.instances.list
|
||||||
- compute.instances.setLabels
|
- compute.instances.setLabels
|
||||||
|
- compute.instances.setTags
|
||||||
- compute.instances.start
|
- compute.instances.start
|
||||||
- compute.instances.stop
|
- compute.instances.stop
|
||||||
- compute.snapshots.create
|
- compute.snapshots.create
|
||||||
|
|
|
||||||
|
|
@ -13,18 +13,18 @@ describe 'Vmpooler::PoolManager::Provider::Gce' do
|
||||||
let(:provider_options) { { 'param' => 'value' } }
|
let(:provider_options) { { 'param' => 'value' } }
|
||||||
let(:project) { 'vmpooler-test' }
|
let(:project) { 'vmpooler-test' }
|
||||||
let(:zone) { 'us-west1-b' }
|
let(:zone) { 'us-west1-b' }
|
||||||
let(:config) { YAML.load(<<-EOT
|
let(:config) { YAML.load(<<~EOT
|
||||||
---
|
---
|
||||||
:config:
|
:config:
|
||||||
max_tries: 3
|
max_tries: 3
|
||||||
retry_factor: 10
|
retry_factor: 10
|
||||||
:providers:
|
:providers:
|
||||||
:gce:
|
:gce:
|
||||||
connection_pool_timeout: 1
|
connection_pool_timeout: 1
|
||||||
project: '#{project}'
|
project: '#{project}'
|
||||||
zone: '#{zone}'
|
zone: '#{zone}'
|
||||||
network_name: global/networks/default
|
network_name: global/networks/default
|
||||||
:pools:
|
:pools:
|
||||||
- name: '#{poolname}'
|
- name: '#{poolname}'
|
||||||
alias: [ 'mockpool' ]
|
alias: [ 'mockpool' ]
|
||||||
template: 'projects/debian-cloud/global/images/family/debian-9'
|
template: 'projects/debian-cloud/global/images/family/debian-9'
|
||||||
|
|
@ -61,14 +61,15 @@ EOT
|
||||||
|
|
||||||
describe '#manual tests live' do
|
describe '#manual tests live' do
|
||||||
context 'in itsysops' do
|
context 'in itsysops' do
|
||||||
let(:vmname) { "instance-15" }
|
before(:each) { allow(subject).to receive(:dns).and_call_original }
|
||||||
|
let(:vmname) { "instance-24" }
|
||||||
let(:project) { 'vmpooler-test' }
|
let(:project) { 'vmpooler-test' }
|
||||||
let(:config) { YAML.load(<<-EOT
|
let(:config) { YAML.load(<<~EOT
|
||||||
---
|
---
|
||||||
:config:
|
:config:
|
||||||
max_tries: 3
|
max_tries: 3
|
||||||
retry_factor: 10
|
retry_factor: 10
|
||||||
:providers:
|
:providers:
|
||||||
:gce:
|
:gce:
|
||||||
connection_pool_timeout: 1
|
connection_pool_timeout: 1
|
||||||
project: '#{project}'
|
project: '#{project}'
|
||||||
|
|
@ -76,7 +77,7 @@ EOT
|
||||||
network_name: 'projects/itsysopsnetworking/global/networks/shared1'
|
network_name: 'projects/itsysopsnetworking/global/networks/shared1'
|
||||||
dns_zone_resource_name: 'test-vmpooler-puppet-net'
|
dns_zone_resource_name: 'test-vmpooler-puppet-net'
|
||||||
domain: 'test.vmpooler.puppet.net'
|
domain: 'test.vmpooler.puppet.net'
|
||||||
:pools:
|
:pools:
|
||||||
- name: '#{poolname}'
|
- name: '#{poolname}'
|
||||||
alias: [ 'mockpool' ]
|
alias: [ 'mockpool' ]
|
||||||
template: 'projects/debian-cloud/global/images/family/debian-9'
|
template: 'projects/debian-cloud/global/images/family/debian-9'
|
||||||
|
|
@ -86,11 +87,12 @@ EOT
|
||||||
provider: 'gce'
|
provider: 'gce'
|
||||||
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'
|
||||||
EOT
|
EOT
|
||||||
) }
|
) }
|
||||||
skip 'gets a vm' do
|
skip 'gets a vm' do
|
||||||
result = subject.create_vm(poolname, vmname)
|
result = subject.create_vm(poolname, vmname)
|
||||||
#subject.get_vm(poolname, vmname)
|
#result = subject.destroy_vm(poolname, vmname)
|
||||||
|
subject.get_vm(poolname, vmname)
|
||||||
#subject.dns_teardown({'name' => vmname})
|
#subject.dns_teardown({'name' => vmname})
|
||||||
# subject.dns_setup({'name' => vmname, 'ip' => '1.2.3.5'})
|
# subject.dns_setup({'name' => vmname, 'ip' => '1.2.3.5'})
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue