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
|
ImagesClient = images_client.ImagesClient
|
||||||
FlavorsClient = flavors_client.FlavorsClient
|
FlavorsClient = flavors_client.FlavorsClient
|
||||||
ServersClient = servers_client.ServersClientJSON
|
ServersClient = servers_client.ServersClientJSON
|
||||||
LimitsClient = limits_client.LimitsClient
|
LimitsClient = limits_client.LimitsClientJSON
|
||||||
ExtensionsClient = extensions_client.ExtensionsClient
|
ExtensionsClient = extensions_client.ExtensionsClient
|
||||||
SecurityGroupsClient = security_groups_client.SecurityGroupsClient
|
SecurityGroupsClient = security_groups_client.SecurityGroupsClient
|
||||||
FloatingIPsClient = floating_ips_client.FloatingIPsClient
|
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.network.json.network_client import NetworkClient
|
||||||
from tempest.services.nova.json.images_client import ImagesClient
|
from tempest.services.nova.json.images_client import ImagesClient
|
||||||
from tempest.services.nova.json.flavors_client import FlavorsClient
|
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.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.extensions_client import ExtensionsClient
|
||||||
from tempest.services.nova.json.security_groups_client \
|
from tempest.services.nova.json.security_groups_client \
|
||||||
import SecurityGroupsClient
|
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.volumes_client import VolumesClient
|
||||||
from tempest.services.nova.json.console_output_client \
|
from tempest.services.nova.json.console_output_client \
|
||||||
import ConsoleOutputsClient
|
import ConsoleOutputsClient
|
||||||
|
from tempest.services.nova.xml.limits_client import LimitsClientXML
|
||||||
from tempest.services.nova.xml.servers_client import ServersClientXML
|
from tempest.services.nova.xml.servers_client import ServersClientXML
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
@ -42,6 +43,11 @@ SERVERS_CLIENTS = {
|
||||||
"xml": ServersClientXML,
|
"xml": ServersClientXML,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LIMITS_CLIENTS = {
|
||||||
|
"json": LimitsClientJSON,
|
||||||
|
"xml": LimitsClientXML,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class Manager(object):
|
class Manager(object):
|
||||||
|
|
||||||
|
@ -84,12 +90,12 @@ class Manager(object):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.servers_client = SERVERS_CLIENTS[interface](*client_args)
|
self.servers_client = SERVERS_CLIENTS[interface](*client_args)
|
||||||
|
self.limits_client = LIMITS_CLIENTS[interface](*client_args)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
msg = "Unsupported interface type `%s'" % interface
|
msg = "Unsupported interface type `%s'" % interface
|
||||||
raise exceptions.InvalidConfiguration(msg)
|
raise exceptions.InvalidConfiguration(msg)
|
||||||
self.flavors_client = FlavorsClient(*client_args)
|
self.flavors_client = FlavorsClient(*client_args)
|
||||||
self.images_client = ImagesClient(*client_args)
|
self.images_client = ImagesClient(*client_args)
|
||||||
self.limits_client = LimitsClient(*client_args)
|
|
||||||
self.extensions_client = ExtensionsClient(*client_args)
|
self.extensions_client = ExtensionsClient(*client_args)
|
||||||
self.keypairs_client = KeyPairsClient(*client_args)
|
self.keypairs_client = KeyPairsClient(*client_args)
|
||||||
self.security_groups_client = SecurityGroupsClient(*client_args)
|
self.security_groups_client = SecurityGroupsClient(*client_args)
|
||||||
|
|
|
@ -2,10 +2,10 @@ import json
|
||||||
from tempest.common.rest_client import RestClient
|
from tempest.common.rest_client import RestClient
|
||||||
|
|
||||||
|
|
||||||
class LimitsClient(RestClient):
|
class LimitsClientJSON(RestClient):
|
||||||
|
|
||||||
def __init__(self, config, username, password, auth_url, tenant_name=None):
|
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)
|
auth_url, tenant_name)
|
||||||
self.service = self.config.compute.catalog_type
|
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