Nova API test.py with servers, flavors, images

This commit is contained in:
Przemyslaw Kaminski 2015-08-04 09:31:40 +02:00
parent a2ad4c1f15
commit f83c70bdb4
8 changed files with 100 additions and 8 deletions

View File

@ -1,6 +1,6 @@
# Cinder resource for puppet handler
Controlls a live cycle of the cinder entities,
Controls a live cycle of the cinder entities,
like the main puppet class, auth, DB, AMQP, packages,
keystone user, role and endpoint.
@ -109,4 +109,4 @@ source https://github.com/openstack/puppet-cinder/blob/5.1.0/manifests/init.pp
``sql_connection``
DEPRECATED
``sql_idle_timeout``
DEPRECATED
DEPRECATED

View File

@ -9,7 +9,7 @@ def test(resource):
args = resource.args
token = validation.validate_token(
token, _ = validation.validate_token(
keystone_host=args['keystone_host'].value,
keystone_port=args['keystone_port'].value,
user='glance_admin',

View File

@ -1,6 +1,6 @@
# Glance (API) resource for puppet handler
Controlls a live cycle of the glance entities,
Controls a live cycle of the glance entities,
like the main puppet class, auth, DB, AMQP, packages,
keystone user, role and endpoint, API service. Also configures
glance file backend.

View File

@ -13,7 +13,7 @@ def test(resource):
args = resource.args
token = validation.validate_token(
token, _ = validation.validate_token(
keystone_host=args['keystone_host'].value,
keystone_port=args['keystone_port'].value,
user=args['keystone_user'].value,

View File

@ -12,7 +12,7 @@ def test(resource):
'http://%s:%s/v3/services' % (resource.args['ip'].value, resource.args['keystone_admin_port'].value),
headers={
'X-Auth-Token': resource.args['admin_token'].value,
}
}
)
resp_json = resp.json()

View File

@ -9,7 +9,7 @@ def test(resource):
args = resource.args
token = validation.validate_token(
token, _ = validation.validate_token(
keystone_host=args['keystone_host'].value,
keystone_port=args['keystone_port'].value,
user=args['user_name'].value,

View File

@ -0,0 +1,92 @@
import json
import requests
from solar.core.log import log
from solar.core import validation
def test(resource):
log.debug('Testing nova api')
args = resource.args
token, token_data = validation.validate_token(
keystone_host=args['auth_host'].value,
keystone_port=args['auth_port'].value,
user=args['admin_user'].value,
tenant=args['admin_tenant_name'].value,
password=args['admin_password'].value,
)
endpoints = [
e['endpoints'] for e in token_data['access']['serviceCatalog']
if e['name'] == 'nova'
][0]
public_url = endpoints[0]['publicURL']
log.debug('nova admin_url: %s', public_url)
servers = requests.get(
'{public_url}/servers/detail'.format(public_url=public_url),
headers={
'X-Auth-Token': token,
'Content-Type': 'application/json',
}
)
servers_json = servers.json()
log.debug(
'NOVA API SERVERS: %s',
json.dumps(servers_json, indent=2)
)
assert 'servers' in servers_json
assert isinstance(servers_json['servers'], list)
flavors = requests.get(
'{public_url}/flavors'.format(public_url=public_url),
headers={
'X-Auth-Token': token,
'Content-Type': 'application/json',
}
)
flavors_json = flavors.json()
log.debug('NOVA API FLAVORS: %s', json.dumps(flavors_json, indent=2))
assert 'flavors' in flavors_json
assert isinstance(flavors_json['flavors'], list)
assert len(flavors_json['flavors']) > 0
for flavor_data in flavors_json['flavors']:
url = [link['href'] for link in flavor_data['links']
if link['rel'] == 'self'][0]
flavor = requests.get(
url,
headers={
'X-Auth-Token': token,
'Content-Type': 'application/json',
}
)
flavor_json = flavor.json()
log.debug(
'NOVA API FLAVOR %s data: %s',
flavor_data['name'],
json.dumps(flavor_json, indent=2)
)
images = requests.get(
'{public_url}/images'.format(public_url=public_url),
headers={
'X-Auth-Token': token,
'Content-Type': 'application/json',
}
)
log.debug('NOVA API IMAGES: %s', images.json())

View File

@ -1,6 +1,6 @@
# Nova resource for puppet handler
Controlls a live cycle of the nova entities,
Controls a live cycle of the nova entities,
like the main puppet class, auth, DB, AMQP, packages,
keystone user, role and endpoint.