Implementing XML client for VPNaaS
VPNaaS API test for xml request body is missing.
This blueproint implements xml client for VPNaaS testcases.
Change-Id: I236a889350e9b7d865e874b73f825b3a34809a3f
Implements: blueprint vpnaas-api-tests-xml
diff --git a/tempest/api/network/test_vpnaas_extensions.py b/tempest/api/network/test_vpnaas_extensions.py
index 78bc80a..9c154d5 100644
--- a/tempest/api/network/test_vpnaas_extensions.py
+++ b/tempest/api/network/test_vpnaas_extensions.py
@@ -21,7 +21,7 @@
CONF = config.CONF
-class VPNaaSJSON(base.BaseNetworkTest):
+class VPNaaSTestJSON(base.BaseNetworkTest):
_interface = 'json'
"""
@@ -41,7 +41,7 @@
if not test.is_extension_enabled('vpnaas', 'network'):
msg = "vpnaas extension not enabled."
raise cls.skipException(msg)
- super(VPNaaSJSON, cls).setUpClass()
+ super(VPNaaSTestJSON, cls).setUpClass()
cls.network = cls.create_network()
cls.subnet = cls.create_subnet(cls.network)
cls.router = cls.create_router(
@@ -175,3 +175,7 @@
ikepolicy['phase1_negotiation_mode'])
self.assertEqual(self.ikepolicy['ike_version'],
ikepolicy['ike_version'])
+
+
+class VPNaaSTestXML(VPNaaSTestJSON):
+ _interface = 'xml'
diff --git a/tempest/services/network/xml/network_client.py b/tempest/services/network/xml/network_client.py
index a9d4880..50a1954 100644
--- a/tempest/services/network/xml/network_client.py
+++ b/tempest/services/network/xml/network_client.py
@@ -257,6 +257,38 @@
body = _root_tag_fetcher_and_xml_to_json_parse(body)
return resp, body
+ def create_vpnservice(self, subnet_id, router_id, **kwargs):
+ uri = '%s/vpn/vpnservices' % (self.uri_prefix)
+ vpnservice = common.Element("vpnservice")
+ p1 = common.Element("subnet_id", subnet_id)
+ p2 = common.Element("router_id", router_id)
+ vpnservice.append(p1)
+ vpnservice.append(p2)
+ common.deep_dict_to_xml(vpnservice, kwargs)
+ resp, body = self.post(uri, str(common.Document(vpnservice)))
+ body = _root_tag_fetcher_and_xml_to_json_parse(body)
+ return resp, body
+
+ def create_ikepolicy(self, name, **kwargs):
+ uri = '%s/vpn/ikepolicies' % (self.uri_prefix)
+ ikepolicy = common.Element("ikepolicy")
+ p1 = common.Element("name", name)
+ ikepolicy.append(p1)
+ common.deep_dict_to_xml(ikepolicy, kwargs)
+ resp, body = self.post(uri, str(common.Document(ikepolicy)))
+ body = _root_tag_fetcher_and_xml_to_json_parse(body)
+ return resp, body
+
+ def create_ipsecpolicy(self, name, **kwargs):
+ uri = '%s/vpn/ipsecpolicies' % (self.uri_prefix)
+ ipsecpolicy = common.Element("ipsecpolicy")
+ p1 = common.Element("name", name)
+ ipsecpolicy.append(p1)
+ common.deep_dict_to_xml(ipsecpolicy, kwargs)
+ resp, body = self.post(uri, str(common.Document(ipsecpolicy)))
+ body = _root_tag_fetcher_and_xml_to_json_parse(body)
+ return resp, body
+
def _root_tag_fetcher_and_xml_to_json_parse(xml_returned_body):
body = ET.fromstring(xml_returned_body)