blob: d924dff83a57ca423328bc22efa669c986812a2b [file] [log] [blame]
ZhiQiang Fan39f97222013-09-20 04:49:44 +08001# Copyright 2012 OpenStack Foundation
dwallecke62b9f02012-10-10 23:34:42 -05002# All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
15
16from lxml import etree
Matthew Treinish684d8992014-01-30 16:27:40 +000017
vponomaryov960eeb42014-02-22 18:25:25 +020018from tempest.common import rest_client
Matthew Treinish28f164c2014-03-04 18:55:06 +000019from tempest.common import xml_utils
Matthew Treinish684d8992014-01-30 16:27:40 +000020from tempest import config
dwallecke62b9f02012-10-10 23:34:42 -050021
Matthew Treinish684d8992014-01-30 16:27:40 +000022CONF = config.CONF
23
dwallecke62b9f02012-10-10 23:34:42 -050024
vponomaryov960eeb42014-02-22 18:25:25 +020025class ExtensionsClientXML(rest_client.RestClient):
26 TYPE = "xml"
dwallecke62b9f02012-10-10 23:34:42 -050027
Andrea Frittoli8bbdb162014-01-06 11:06:13 +000028 def __init__(self, auth_provider):
29 super(ExtensionsClientXML, self).__init__(auth_provider)
Matthew Treinish684d8992014-01-30 16:27:40 +000030 self.service = CONF.compute.catalog_type
dwallecke62b9f02012-10-10 23:34:42 -050031
32 def _parse_array(self, node):
33 array = []
34 for child in node:
Matthew Treinish28f164c2014-03-04 18:55:06 +000035 array.append(xml_utils.xml_to_json(child))
dwallecke62b9f02012-10-10 23:34:42 -050036 return array
37
38 def list_extensions(self):
39 url = 'extensions'
vponomaryovf4c27f92014-02-18 10:56:42 +020040 resp, body = self.get(url)
dwallecke62b9f02012-10-10 23:34:42 -050041 body = self._parse_array(etree.fromstring(body))
Matthew Treinish78e28bd2013-11-27 15:58:58 +000042 return resp, body
dwallecke62b9f02012-10-10 23:34:42 -050043
44 def is_enabled(self, extension):
45 _, extensions = self.list_extensions()
46 exts = extensions['extensions']
47 return any([e for e in exts if e['name'] == extension])
ivan-zhu40253442013-11-18 16:31:01 +080048
49 def get_extension(self, extension_alias):
vponomaryovf4c27f92014-02-18 10:56:42 +020050 resp, body = self.get('extensions/%s' % extension_alias)
Matthew Treinish28f164c2014-03-04 18:55:06 +000051 body = xml_utils.xml_to_json(etree.fromstring(body))
ivan-zhu40253442013-11-18 16:31:01 +080052 return resp, body