blob: 377781bb31d5a81b8b4571392e70674c3c6ede5e [file] [log] [blame]
from nose.plugins.attrib import attr
from nose import SkipTest
import tempest.config
from tempest import exceptions
from tempest import openstack
from tempest.tests.base_compute_test import BaseComputeTest
class FlavorsAdminTest(BaseComputeTest):
"""
Tests Flavors API Create and Delete that require admin privileges
"""
@classmethod
def setUpClass(cls):
cls.config = tempest.config.TempestConfig()
cls.admin_username = cls.config.compute_admin.username
cls.admin_password = cls.config.compute_admin.password
cls.admin_tenant = cls.config.compute_admin.tenant_name
if not(cls.admin_username and cls.admin_password and cls.admin_tenant):
raise SkipTest("Missing Admin credentials in configuration")
else:
cls.admin_os = openstack.AdminManager()
cls.admin_client = cls.admin_os.flavors_client
cls.flavor_name = 'test_flavor'
cls.ram = 512
cls.vcpus = 1
cls.disk = 10
cls.ephemeral = 10
cls.new_flavor_id = 1234
cls.swap = 1024
cls.rxtx = 1
@attr(type='positive')
def test_create_flavor(self):
"""Create a flavor and ensure it is listed
This operation requires the user to have 'admin' role"""
#Create the flavor
resp, flavor = self.admin_client.create_flavor(self.flavor_name,
self.ram, self.vcpus,
self.disk,
self.ephemeral,
self.new_flavor_id,
self.swap, self.rxtx)
self.assertEqual(200, resp.status)
self.assertEqual(flavor['name'], self.flavor_name)
self.assertEqual(flavor['vcpus'], self.vcpus)
self.assertEqual(flavor['disk'], self.disk)
self.assertEqual(flavor['ram'], self.ram)
self.assertEqual(int(flavor['id']), self.new_flavor_id)
self.assertEqual(flavor['swap'], self.swap)
self.assertEqual(flavor['rxtx_factor'], self.rxtx)
self.assertEqual(flavor['OS-FLV-EXT-DATA:ephemeral'], self.ephemeral)
#Verify flavor is retrieved
resp, flavor = self.admin_client.get_flavor_details(self.new_flavor_id)
self.assertEqual(resp.status, 200)
self.assertEqual(flavor['name'], self.flavor_name)
#Delete the flavor
resp, body = self.admin_client.delete_flavor(flavor['id'])
self.assertEqual(resp.status, 202)
@attr(type='positive')
def test_create_flavor_verify_entry_in_list_details(self):
"""Create a flavor and ensure it's details are listed
This operation requires the user to have 'admin' role"""
#Create the flavor
resp, flavor = self.admin_client.create_flavor(self.flavor_name,
self.ram, self.vcpus,
self.disk,
self.ephemeral,
self.new_flavor_id,
self.swap, self.rxtx)
flag = False
#Verify flavor is retrieved
resp, flavors = self.admin_client.list_flavors_with_detail()
self.assertEqual(resp.status, 200)
for flavor in flavors:
if flavor['name'] == self.flavor_name:
flag = True
self.assertTrue(flag)
#Delete the flavor
resp, body = self.admin_client.delete_flavor(self.new_flavor_id)
self.assertEqual(resp.status, 202)
@attr(type='negative')
def test_get_flavor_details_for_deleted_flavor(self):
"""Delete a flavor and ensure it is not listed"""
# Create a test flavor
resp, flavor = self.admin_client.create_flavor(self.flavor_name,
self.ram,
self.vcpus, self.disk,
self.ephemeral,
self.new_flavor_id,
self.swap, self.rxtx)
self.assertEquals(200, resp.status)
# Delete the flavor
resp, _ = self.admin_client.delete_flavor(self.new_flavor_id)
self.assertEqual(resp.status, 202)
# Get deleted flavor details
self.assertRaises(exceptions.NotFound,
self.admin_client.get_flavor_details, self.new_flavor_id)