Simplify confirm_server_resite_test and make more accurate

This also limits the servers being used for the test to only those in
the openstack_admin's project so as not to disrupt servers being used
in other tenants for other purposes.
This commit is contained in:
Mark Maglana
2013-09-11 12:29:20 -07:00
parent e5224dd00c
commit d423d1609a
2 changed files with 25 additions and 36 deletions

View File

@@ -10,7 +10,7 @@ module Aviator
link 'documentation',
'http://docs.openstack.org/api/openstack-compute/2/content/Confirm_Resized_Server-d1e3868.html'
param :id, required: true
param :id, required: true
def body

View File

@@ -28,50 +28,39 @@ class Aviator::Test
def session
unless @session
environment = 'openstack_admin'
@session = Aviator::Session.new(
config_file: Environment.path,
environment: environment
)
@session = Aviator::Session.new(
config_file: Environment.path,
environment: 'openstack_admin'
)
@session.authenticate
creds = YAML.load_file(Environment.path).with_indifferent_access[environment]['auth_credentials']
tenants = @session.identity_service.request(:list_tenants).body['tenants']
resized_server = nil
tenants.each do |t|
@session.authenticate do |c|
c[:username] = creds[:username]
c[:password] = creds[:password]
c[:tenantName] = t['name']
end
servers = @session.compute_service.request(:list_servers){ |p| p[:details] = true }.body['servers']
unless servers.empty?
resized_server = servers.find{ |s| s['status'] == 'VERIFY_RESIZE' }
break if resized_server
end
end
raise "\n\nEnvironment should have at least 1 recently"\
" resized server with a status of VERIFY_STATUS\n\n" unless resized_server
end
@session
end
def server
@server ||= session.compute_service
.request(:list_servers){ |p| p[:details] = true }
.body[:servers]
.find{ |s| s['status'] == 'VERIFY_RESIZE' }
.with_indifferent_access
unless @server
response = session.compute_service.request(:list_servers) do |params|
params[:details] = true
params[:all_tenants] = true
end
current_tenant = get_session_data[:access][:token][:tenant]
resized_servers = response.body[:servers].select do |server|
server[:status] == 'VERIFY_RESIZE' && server[:tenant_id] == current_tenant[:id]
end
raise "\n\nProject '#{ current_tenant[:name] }' should have at least 1 server with "\
"a status of VERIFY_RESIZE\n\n" if resized_servers.empty?
@server = resized_servers.first
end
@server
end