Implementing the tag_vm_user method

This method gets the user name based on the token:user metadata in redis,
cleans it up to be safe for a label name (lowercase, numbers and dash or underscore only),
and update the existing instance labels adding a new one called token-user
This commit is contained in:
Samuel Beaulieu 2021-12-09 11:35:29 -06:00
parent f6791baba0
commit 8594160fbe
No known key found for this signature in database
GPG key ID: 12030F74136D0F34
2 changed files with 72 additions and 10 deletions

View file

@ -38,7 +38,7 @@ EOT
)
}
let(:vmname) { 'vm13' }
let(:vmname) { 'vm15' }
let(:connection) { MockComputeServiceConnection.new }
let(:redis_connection_pool) { Vmpooler::PoolManager::GenericConnectionPool.new(
metrics: metrics,
@ -61,6 +61,8 @@ EOT
skip 'runs in gce' do
puts "creating"
result = subject.create_vm(poolname, vmname)
subject.get_vm(poolname, vmname)
=begin
puts "create snapshot w/ one disk"
result = subject.create_snapshot(poolname, vmname, "sams")
puts "create disk"
@ -69,6 +71,7 @@ EOT
result = subject.create_snapshot(poolname, vmname, "sams2")
puts "revert snapshot"
result = subject.revert_snapshot(poolname, vmname, "sams")
=end
#result = subject.destroy_vm(poolname, vmname)
end
@ -737,5 +740,20 @@ EOT
expect{ subject.purge_unconfigured_resources(nil) }.to raise_error(/mockerror/)
end
end
describe '#get_current_user' do
it 'should downcase and replace invalid chars with dashes' do
redis_connection_pool.with_metrics do |redis|
redis.hset("vmpooler__vm__#{vmname}", 'token:user', "BOBBY.PUPPET")
expect(subject.get_current_user(vmname)).to eq("bobby-puppet")
end
end
it 'returns "" for nil values' do
redis_connection_pool.with_metrics do |redis|
expect(subject.get_current_user(vmname)).to eq("")
end
end
end
end