Add XML support to the limits client.
Change-Id: Ib3cecacbc722721ea04e6506969d159cd1269cf0 Signed-off-by: Matthew Treinish <treinish@linux.vnet.ibm.com>
This commit is contained in:
parent
2dfc282dc2
commit
3363446ad6
|
@ -40,7 +40,7 @@ NetworkClient = network_client.NetworkClient
|
|||
ImagesClient = images_client.ImagesClient
|
||||
FlavorsClient = flavors_client.FlavorsClient
|
||||
ServersClient = servers_client.ServersClientJSON
|
||||
LimitsClient = limits_client.LimitsClient
|
||||
LimitsClient = limits_client.LimitsClientJSON
|
||||
ExtensionsClient = extensions_client.ExtensionsClient
|
||||
SecurityGroupsClient = security_groups_client.SecurityGroupsClient
|
||||
FloatingIPsClient = floating_ips_client.FloatingIPsClient
|
||||
|
|
|
@ -23,8 +23,8 @@ from tempest.services.image import service as image_service
|
|||
from tempest.services.network.json.network_client import NetworkClient
|
||||
from tempest.services.nova.json.images_client import ImagesClient
|
||||
from tempest.services.nova.json.flavors_client import FlavorsClient
|
||||
from tempest.services.nova.json.limits_client import LimitsClientJSON
|
||||
from tempest.services.nova.json.servers_client import ServersClientJSON
|
||||
from tempest.services.nova.json.limits_client import LimitsClient
|
||||
from tempest.services.nova.json.extensions_client import ExtensionsClient
|
||||
from tempest.services.nova.json.security_groups_client \
|
||||
import SecurityGroupsClient
|
||||
|
@ -33,6 +33,7 @@ from tempest.services.nova.json.keypairs_client import KeyPairsClient
|
|||
from tempest.services.nova.json.volumes_client import VolumesClient
|
||||
from tempest.services.nova.json.console_output_client \
|
||||
import ConsoleOutputsClient
|
||||
from tempest.services.nova.xml.limits_client import LimitsClientXML
|
||||
from tempest.services.nova.xml.servers_client import ServersClientXML
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
@ -42,6 +43,11 @@ SERVERS_CLIENTS = {
|
|||
"xml": ServersClientXML,
|
||||
}
|
||||
|
||||
LIMITS_CLIENTS = {
|
||||
"json": LimitsClientJSON,
|
||||
"xml": LimitsClientXML,
|
||||
}
|
||||
|
||||
|
||||
class Manager(object):
|
||||
|
||||
|
@ -84,12 +90,12 @@ class Manager(object):
|
|||
|
||||
try:
|
||||
self.servers_client = SERVERS_CLIENTS[interface](*client_args)
|
||||
self.limits_client = LIMITS_CLIENTS[interface](*client_args)
|
||||
except KeyError:
|
||||
msg = "Unsupported interface type `%s'" % interface
|
||||
raise exceptions.InvalidConfiguration(msg)
|
||||
self.flavors_client = FlavorsClient(*client_args)
|
||||
self.images_client = ImagesClient(*client_args)
|
||||
self.limits_client = LimitsClient(*client_args)
|
||||
self.extensions_client = ExtensionsClient(*client_args)
|
||||
self.keypairs_client = KeyPairsClient(*client_args)
|
||||
self.security_groups_client = SecurityGroupsClient(*client_args)
|
||||
|
|
|
@ -2,10 +2,10 @@ import json
|
|||
from tempest.common.rest_client import RestClient
|
||||
|
||||
|
||||
class LimitsClient(RestClient):
|
||||
class LimitsClientJSON(RestClient):
|
||||
|
||||
def __init__(self, config, username, password, auth_url, tenant_name=None):
|
||||
super(LimitsClient, self).__init__(config, username, password,
|
||||
super(LimitsClientJSON, self).__init__(config, username, password,
|
||||
auth_url, tenant_name)
|
||||
self.service = self.config.compute.catalog_type
|
||||
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
||||
#
|
||||
# Copyright 2012 IBM
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from tempest.common.rest_client import RestClientXML
|
||||
from lxml import etree
|
||||
from lxml import objectify
|
||||
|
||||
NS = "{http://docs.openstack.org/common/api/v1.0}"
|
||||
|
||||
|
||||
class LimitsClientXML(RestClientXML):
|
||||
|
||||
def __init__(self, config, username, password, auth_url, tenant_name=None):
|
||||
super(LimitsClientXML, self).__init__(config, username, password,
|
||||
auth_url, tenant_name)
|
||||
self.service = self.config.compute.catalog_type
|
||||
|
||||
def get_limits(self):
|
||||
resp, body = self.get("limits", self.headers)
|
||||
body = objectify.fromstring(body)
|
||||
lim = NS + 'absolute'
|
||||
ret = {}
|
||||
|
||||
for el in body[lim].iterchildren():
|
||||
attributes = el.attrib
|
||||
if attributes['name'] == 'maxServerMeta':
|
||||
ret['maxServerMeta'] = int(attributes['value'])
|
||||
elif attributes['name'] == 'maxPersonality':
|
||||
ret['maxPersonality'] = int(attributes['value'])
|
||||
elif attributes['name'] == 'maxPersonalitySize':
|
||||
ret['maxPersonalitySize'] = int(attributes['value'])
|
||||
|
||||
return resp, ret
|
||||
|
||||
def get_max_server_meta(self):
|
||||
resp, limits_dict = self.get_limits()
|
||||
return resp, limits_dict['maxServerMeta']
|
||||
|
||||
def get_personality_file_limit(self):
|
||||
resp, limits_dict = self.get_limits()
|
||||
return resp, limits_dict['maxPersonality']
|
||||
|
||||
def get_personality_size_limit(self):
|
||||
resp, limits_dict = self.get_limits()
|
||||
return resp, limits_dict['maxPersonalitySize']
|
Loading…
Reference in New Issue