mirror of
https://github.com/puppetlabs/vmpooler.git
synced 2026-01-26 01:58:41 -05:00
(POOLER-92) Add the alias information in the API status page for each pool
Before this change if a pool had an alias configured, the information would not be made public in the API. This commit adds the alias key in the pool object for each pool if configured. The alias key can be abscent, a string or an one or multiple array of strings. The value of the alias is copied from the configuration and can represent another name for the pool, or another configured pool.
This commit is contained in:
parent
0b5abd9bd3
commit
f10bcadf7e
3 changed files with 95 additions and 5 deletions
|
|
@ -199,6 +199,7 @@ module Vmpooler
|
||||||
running = backend.scard('vmpooler__running__' + pool['name']).to_i
|
running = backend.scard('vmpooler__running__' + pool['name']).to_i
|
||||||
pending = backend.scard('vmpooler__pending__' + pool['name']).to_i
|
pending = backend.scard('vmpooler__pending__' + pool['name']).to_i
|
||||||
max = pool['size']
|
max = pool['size']
|
||||||
|
aka = pool['alias']
|
||||||
|
|
||||||
result[:pools][pool['name']] = {
|
result[:pools][pool['name']] = {
|
||||||
ready: ready,
|
ready: ready,
|
||||||
|
|
@ -207,6 +208,10 @@ module Vmpooler
|
||||||
max: max
|
max: max
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if aka
|
||||||
|
result[:pools][pool['name']][:alias] = aka
|
||||||
|
end
|
||||||
|
|
||||||
# for backwards compatibility, include separate "empty" stats in "status" block
|
# for backwards compatibility, include separate "empty" stats in "status" block
|
||||||
if ready == 0
|
if ready == 0
|
||||||
result[:status][:empty] ||= []
|
result[:status][:empty] ||= []
|
||||||
|
|
|
||||||
|
|
@ -32,10 +32,10 @@ describe Vmpooler::API::V1 do
|
||||||
'vm_lifetime_auth' => 2,
|
'vm_lifetime_auth' => 2,
|
||||||
},
|
},
|
||||||
pools: [
|
pools: [
|
||||||
{'name' => 'pool1', 'size' => 5},
|
{'name' => 'pool1', 'size' => 5, 'alias' => ['poolone', 'poolun']},
|
||||||
{'name' => 'pool2', 'size' => 10}
|
{'name' => 'pool2', 'size' => 10},
|
||||||
],
|
{'name' => 'pool3', 'size' => 10, 'alias' => 'NotArray'}
|
||||||
alias: { 'poolone' => 'pool1' },
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -98,13 +98,24 @@ describe Vmpooler::API::V1 do
|
||||||
expect(result["pools"]["pool2"]["pending"]).to be(4)
|
expect(result["pools"]["pool2"]["pending"]).to be(4)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'returns aliases if configured in the pool' do
|
||||||
|
get "#{prefix}/status/"
|
||||||
|
|
||||||
|
# of course /status doesn't conform to the weird standard everything else uses...
|
||||||
|
expect(last_response.header['Content-Type']).to eq('application/json')
|
||||||
|
result = JSON.parse(last_response.body)
|
||||||
|
expect(result["pools"]["pool1"]["alias"]).to eq(['poolone', 'poolun'])
|
||||||
|
expect(result["pools"]["pool2"]["alias"]).to be(nil)
|
||||||
|
expect(result["pools"]["pool3"]["alias"]).to eq('NotArray')
|
||||||
|
end
|
||||||
|
|
||||||
it '(for v1 backwards compatibility) lists any empty pools in the status section' do
|
it '(for v1 backwards compatibility) lists any empty pools in the status section' do
|
||||||
get "#{prefix}/status/"
|
get "#{prefix}/status/"
|
||||||
|
|
||||||
# of course /status doesn't conform to the weird standard everything else uses...
|
# of course /status doesn't conform to the weird standard everything else uses...
|
||||||
expect(last_response.header['Content-Type']).to eq('application/json')
|
expect(last_response.header['Content-Type']).to eq('application/json')
|
||||||
result = JSON.parse(last_response.body)
|
result = JSON.parse(last_response.body)
|
||||||
expect(result["status"]["empty"].sort).to eq(["pool1", "pool2"])
|
expect(result["status"]["empty"].sort).to eq(["pool1", "pool2", "pool3"])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
74
vmpooler.yaml.aliasedpools
Normal file
74
vmpooler.yaml.aliasedpools
Normal file
|
|
@ -0,0 +1,74 @@
|
||||||
|
---
|
||||||
|
:providers:
|
||||||
|
:dummy:
|
||||||
|
filename: '/tmp/dummy-backing.yaml'
|
||||||
|
|
||||||
|
:redis:
|
||||||
|
server: 'localhost'
|
||||||
|
|
||||||
|
:auth:
|
||||||
|
provider: 'dummy'
|
||||||
|
|
||||||
|
:tagfilter:
|
||||||
|
url: '(.*)\/'
|
||||||
|
|
||||||
|
:config:
|
||||||
|
site_name: 'vmpooler'
|
||||||
|
logfile: '/Users/samuel/workspace/vmpooler/vmpooler.log'
|
||||||
|
task_limit: 10
|
||||||
|
timeout: 15
|
||||||
|
vm_checktime: 15
|
||||||
|
vm_lifetime: 12
|
||||||
|
vm_lifetime_auth: 24
|
||||||
|
allowed_tags:
|
||||||
|
- 'created_by'
|
||||||
|
- 'project'
|
||||||
|
domain: 'company.com'
|
||||||
|
prefix: 'poolvm-'
|
||||||
|
|
||||||
|
:pools:
|
||||||
|
- name: 'debian-7-i386'
|
||||||
|
alias: [ 'debian-7-32' ]
|
||||||
|
template: 'Templates/debian-7-i386'
|
||||||
|
folder: 'Pooled VMs/debian-7-i386'
|
||||||
|
datastore: 'vmstorage'
|
||||||
|
size: 5
|
||||||
|
timeout: 15
|
||||||
|
ready_ttl: 1440
|
||||||
|
provider: dummy
|
||||||
|
- name: 'debian-7-i386-stringalias'
|
||||||
|
alias: 'debian-7-32-stringalias'
|
||||||
|
template: 'Templates/debian-7-i386'
|
||||||
|
folder: 'Pooled VMs/debian-7-i386'
|
||||||
|
datastore: 'vmstorage'
|
||||||
|
size: 5
|
||||||
|
timeout: 15
|
||||||
|
ready_ttl: 1440
|
||||||
|
provider: dummy
|
||||||
|
- name: 'debian-7-x86_64'
|
||||||
|
alias: [ 'debian-7-64', 'debian-7-amd64' ]
|
||||||
|
template: 'Templates/debian-7-x86_64'
|
||||||
|
folder: 'Pooled VMs/debian-7-x86_64'
|
||||||
|
datastore: 'vmstorage'
|
||||||
|
size: 5
|
||||||
|
timeout: 15
|
||||||
|
ready_ttl: 1440
|
||||||
|
provider: dummy
|
||||||
|
- name: 'debian-7-i386-noalias'
|
||||||
|
template: 'Templates/debian-7-i386'
|
||||||
|
folder: 'Pooled VMs/debian-7-i386'
|
||||||
|
datastore: 'vmstorage'
|
||||||
|
size: 5
|
||||||
|
timeout: 15
|
||||||
|
ready_ttl: 1440
|
||||||
|
provider: dummy
|
||||||
|
- name: 'debian-7-x86_64-alias-otherpool-extended'
|
||||||
|
alias: [ 'debian-7-x86_64' ]
|
||||||
|
template: 'Templates/debian-7-x86_64'
|
||||||
|
folder: 'Other Pooled VMs/debian-7-x86_64'
|
||||||
|
datastore: 'other-vmstorage'
|
||||||
|
size: 5
|
||||||
|
timeout: 15
|
||||||
|
ready_ttl: 1440
|
||||||
|
provider: dummy
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue