Merge "port instance_usage_audit_log tests into nova v3 part2"

This commit is contained in:
Jenkins
2014-01-19 20:11:23 +00:00
committed by Gerrit Code Review
6 changed files with 51 additions and 52 deletions

View File

@@ -276,6 +276,8 @@ class BaseV3ComputeTest(BaseComputeTest):
cls.extensions_client = cls.os.extensions_v3_client cls.extensions_client = cls.os.extensions_v3_client
cls.availability_zone_client = cls.os.availability_zone_v3_client cls.availability_zone_client = cls.os.availability_zone_v3_client
cls.interfaces_client = cls.os.interfaces_v3_client cls.interfaces_client = cls.os.interfaces_v3_client
cls.instance_usages_audit_log_client = \
cls.os.instance_usages_audit_log_v3_client
cls.hypervisor_client = cls.os.hypervisor_v3_client cls.hypervisor_client = cls.os.hypervisor_v3_client
cls.keypairs_client = cls.os.keypairs_v3_client cls.keypairs_client = cls.os.keypairs_v3_client
cls.tenant_usages_client = cls.os.tenant_usages_v3_client cls.tenant_usages_client = cls.os.tenant_usages_v3_client
@@ -344,6 +346,8 @@ class BaseV3ComputeAdminTest(BaseV3ComputeTest):
cls.os_adm = os_adm cls.os_adm = os_adm
cls.servers_admin_client = cls.os_adm.servers_v3_client cls.servers_admin_client = cls.os_adm.servers_v3_client
cls.instance_usages_audit_log_admin_client = \
cls.os_adm.instance_usages_audit_log_v3_client
cls.services_admin_client = cls.os_adm.services_v3_client cls.services_admin_client = cls.os_adm.services_v3_client
cls.availability_zone_admin_client = \ cls.availability_zone_admin_client = \
cls.os_adm.availability_zone_v3_client cls.os_adm.availability_zone_v3_client

View File

@@ -16,22 +16,22 @@
# under the License. # under the License.
import datetime import datetime
from tempest.api.compute import base
from tempest.test import attr
import urllib import urllib
from tempest.api.compute import base
from tempest import test
class InstanceUsageAuditLogTestJSON(base.BaseV2ComputeAdminTest):
class InstanceUsageAuditLogV3TestJSON(base.BaseV3ComputeAdminTest):
_interface = 'json' _interface = 'json'
@classmethod @classmethod
def setUpClass(cls): def setUpClass(cls):
super(InstanceUsageAuditLogTestJSON, cls).setUpClass() super(InstanceUsageAuditLogV3TestJSON, cls).setUpClass()
cls.adm_client = cls.os_adm.instance_usages_audit_log_client cls.adm_client = cls.instance_usages_audit_log_admin_client
@attr(type='gate') @test.attr(type='gate')
def test_list_instance_usage_audit_logs(self): def test_list_instance_usage_audit_logs(self):
# list instance usage audit logs # list instance usage audit logs
resp, body = self.adm_client.list_instance_usage_audit_logs() resp, body = self.adm_client.list_instance_usage_audit_logs()
@@ -44,12 +44,12 @@ class InstanceUsageAuditLogTestJSON(base.BaseV2ComputeAdminTest):
for item in expected_items: for item in expected_items:
self.assertIn(item, body) self.assertIn(item, body)
@attr(type='gate') @test.attr(type='gate')
def test_get_instance_usage_audit_log(self): def test_list_instance_usage_audit_logs_with_filter_before(self):
# Get instance usage audit log before specified time # Get instance usage audit log before specified time
now = datetime.datetime.now() ending_time = datetime.datetime(2012, 12, 24)
resp, body = self.adm_client.get_instance_usage_audit_log( resp, body = self.adm_client.list_instance_usage_audit_logs(
urllib.quote(now.strftime("%Y-%m-%d %H:%M:%S"))) urllib.quote(ending_time.strftime("%Y-%m-%d %H:%M:%S")))
self.assertEqual(200, resp.status) self.assertEqual(200, resp.status)
expected_items = ['total_errors', 'total_instances', 'log', expected_items = ['total_errors', 'total_instances', 'log',
@@ -58,7 +58,8 @@ class InstanceUsageAuditLogTestJSON(base.BaseV2ComputeAdminTest):
'period_beginning', 'num_hosts_not_run'] 'period_beginning', 'num_hosts_not_run']
for item in expected_items: for item in expected_items:
self.assertIn(item, body) self.assertIn(item, body)
self.assertEqual(body['period_ending'], "2012-12-23 23:00:00")
class InstanceUsageAuditLogTestXML(InstanceUsageAuditLogTestJSON): class InstanceUsageAuditLogV3TestXML(InstanceUsageAuditLogV3TestJSON):
_interface = 'xml' _interface = 'xml'

View File

@@ -15,42 +15,34 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
import datetime
from tempest.api.compute import base from tempest.api.compute import base
from tempest import exceptions from tempest import exceptions
from tempest.test import attr from tempest import test
import urllib
class InstanceUsageAuditLogNegativeTestJSON(base.BaseV2ComputeAdminTest): class InstanceUsageLogNegativeV3TestJSON(base.BaseV3ComputeAdminTest):
_interface = 'json' _interface = 'json'
@classmethod @classmethod
def setUpClass(cls): def setUpClass(cls):
super(InstanceUsageAuditLogNegativeTestJSON, cls).setUpClass() super(InstanceUsageLogNegativeV3TestJSON, cls).setUpClass()
cls.adm_client = cls.os_adm.instance_usages_audit_log_client cls.adm_client = cls.instance_usages_audit_log_admin_client
@attr(type=['negative', 'gate']) @test.attr(type=['negative', 'gate'])
def test_instance_usage_audit_logs_with_nonadmin_user(self): def test_instance_usage_audit_logs_with_nonadmin_user(self):
# the instance_usage_audit_logs API just can be accessed by admin user # the instance_usage_audit_logs API just can be accessed by admin user
self.assertRaises(exceptions.Unauthorized, self.assertRaises(exceptions.Unauthorized,
self.instance_usages_audit_log_client. self.instance_usages_audit_log_client.
list_instance_usage_audit_logs) list_instance_usage_audit_logs)
now = datetime.datetime.now()
self.assertRaises(exceptions.Unauthorized,
self.instance_usages_audit_log_client.
get_instance_usage_audit_log,
urllib.quote(now.strftime("%Y-%m-%d %H:%M:%S")))
@attr(type=['negative', 'gate']) @test.attr(type=['negative', 'gate'])
def test_get_instance_usage_audit_logs_with_invalid_time(self): def test_get_instance_usage_audit_logs_with_invalid_time(self):
self.assertRaises(exceptions.BadRequest, self.assertRaises(exceptions.BadRequest,
self.adm_client.get_instance_usage_audit_log, self.adm_client.list_instance_usage_audit_logs,
"invalid_time") "invalid_time")
class InstanceUsageAuditLogNegativeTestXML( class InstanceUsageLogNegativeV3TestXML(
InstanceUsageAuditLogNegativeTestJSON): InstanceUsageLogNegativeV3TestJSON):
_interface = 'xml' _interface = 'xml'

View File

@@ -64,6 +64,8 @@ from tempest.services.compute.v3.json.flavors_client import FlavorsV3ClientJSON
from tempest.services.compute.v3.json.hosts_client import HostsV3ClientJSON from tempest.services.compute.v3.json.hosts_client import HostsV3ClientJSON
from tempest.services.compute.v3.json.hypervisor_client import \ from tempest.services.compute.v3.json.hypervisor_client import \
HypervisorV3ClientJSON HypervisorV3ClientJSON
from tempest.services.compute.v3.json.instance_usage_audit_log_client import \
InstanceUsagesAuditLogV3ClientJSON
from tempest.services.compute.v3.json.interfaces_client import \ from tempest.services.compute.v3.json.interfaces_client import \
InterfacesV3ClientJSON InterfacesV3ClientJSON
from tempest.services.compute.v3.json.keypairs_client import \ from tempest.services.compute.v3.json.keypairs_client import \
@@ -88,6 +90,8 @@ from tempest.services.compute.v3.xml.flavors_client import FlavorsV3ClientXML
from tempest.services.compute.v3.xml.hosts_client import HostsV3ClientXML from tempest.services.compute.v3.xml.hosts_client import HostsV3ClientXML
from tempest.services.compute.v3.xml.hypervisor_client import \ from tempest.services.compute.v3.xml.hypervisor_client import \
HypervisorV3ClientXML HypervisorV3ClientXML
from tempest.services.compute.v3.xml.instance_usage_audit_log_client import \
InstanceUsagesAuditLogV3ClientXML
from tempest.services.compute.v3.xml.interfaces_client import \ from tempest.services.compute.v3.xml.interfaces_client import \
InterfacesV3ClientXML InterfacesV3ClientXML
from tempest.services.compute.v3.xml.keypairs_client import KeyPairsV3ClientXML from tempest.services.compute.v3.xml.keypairs_client import KeyPairsV3ClientXML
@@ -284,6 +288,8 @@ class Manager(object):
self.credentials_client = CredentialsClientXML(*client_args) self.credentials_client = CredentialsClientXML(*client_args)
self.instance_usages_audit_log_client = \ self.instance_usages_audit_log_client = \
InstanceUsagesAuditLogClientXML(*client_args) InstanceUsagesAuditLogClientXML(*client_args)
self.instance_usages_audit_log_v3_client = \
InstanceUsagesAuditLogV3ClientXML(*client_args)
self.volume_hosts_client = VolumeHostsClientXML(*client_args) self.volume_hosts_client = VolumeHostsClientXML(*client_args)
self.volumes_extension_client = VolumeExtensionClientXML( self.volumes_extension_client = VolumeExtensionClientXML(
*client_args) *client_args)
@@ -347,6 +353,8 @@ class Manager(object):
self.credentials_client = CredentialsClientJSON(*client_args) self.credentials_client = CredentialsClientJSON(*client_args)
self.instance_usages_audit_log_client = \ self.instance_usages_audit_log_client = \
InstanceUsagesAuditLogClientJSON(*client_args) InstanceUsagesAuditLogClientJSON(*client_args)
self.instance_usages_audit_log_v3_client = \
InstanceUsagesAuditLogV3ClientJSON(*client_args)
self.volume_hosts_client = VolumeHostsClientJSON(*client_args) self.volume_hosts_client = VolumeHostsClientJSON(*client_args)
self.volumes_extension_client = VolumeExtensionClientJSON( self.volumes_extension_client = VolumeExtensionClientJSON(
*client_args) *client_args)

View File

@@ -20,21 +20,18 @@ import json
from tempest.common.rest_client import RestClient from tempest.common.rest_client import RestClient
class InstanceUsagesAuditLogClientJSON(RestClient): class InstanceUsagesAuditLogV3ClientJSON(RestClient):
def __init__(self, config, username, password, auth_url, tenant_name=None): def __init__(self, config, username, password, auth_url, tenant_name=None):
super(InstanceUsagesAuditLogClientJSON, self).__init__( super(InstanceUsagesAuditLogV3ClientJSON, self).__init__(
config, username, password, auth_url, tenant_name) config, username, password, auth_url, tenant_name)
self.service = self.config.compute.catalog_type self.service = self.config.compute.catalog_v3_type
def list_instance_usage_audit_logs(self): def list_instance_usage_audit_logs(self, time_before=None):
url = 'os-instance_usage_audit_log' if time_before:
resp, body = self.get(url) url = 'os-instance-usage-audit-log?before=%s' % time_before
body = json.loads(body) else:
return resp, body["instance_usage_audit_logs"] url = 'os-instance-usage-audit-log'
def get_instance_usage_audit_log(self, time_before):
url = 'os-instance_usage_audit_log/%s' % time_before
resp, body = self.get(url) resp, body = self.get(url)
body = json.loads(body) body = json.loads(body)
return resp, body["instance_usage_audit_log"] return resp, body["instance_usage_audit_log"]

View File

@@ -21,21 +21,18 @@ from tempest.common.rest_client import RestClientXML
from tempest.services.compute.xml.common import xml_to_json from tempest.services.compute.xml.common import xml_to_json
class InstanceUsagesAuditLogClientXML(RestClientXML): class InstanceUsagesAuditLogV3ClientXML(RestClientXML):
def __init__(self, config, username, password, auth_url, tenant_name=None): def __init__(self, config, username, password, auth_url, tenant_name=None):
super(InstanceUsagesAuditLogClientXML, self).__init__( super(InstanceUsagesAuditLogV3ClientXML, self).__init__(
config, username, password, auth_url, tenant_name) config, username, password, auth_url, tenant_name)
self.service = self.config.compute.catalog_type self.service = self.config.compute.catalog_v3_type
def list_instance_usage_audit_logs(self): def list_instance_usage_audit_logs(self, time_before=None):
url = 'os-instance_usage_audit_log' if time_before:
url = 'os-instance-usage-audit-log?before=%s' % time_before
else:
url = 'os-instance-usage-audit-log'
resp, body = self.get(url, self.headers) resp, body = self.get(url, self.headers)
instance_usage_audit_logs = xml_to_json(etree.fromstring(body)) instance_usage_audit_logs = xml_to_json(etree.fromstring(body))
return resp, instance_usage_audit_logs return resp, instance_usage_audit_logs
def get_instance_usage_audit_log(self, time_before):
url = 'os-instance_usage_audit_log/%s' % time_before
resp, body = self.get(url, self.headers)
instance_usage_audit_log = xml_to_json(etree.fromstring(body))
return resp, instance_usage_audit_log