aboutsummaryrefslogtreecommitdiffstats
path: root/resources/libraries/python/honeycomb
diff options
context:
space:
mode:
Diffstat (limited to 'resources/libraries/python/honeycomb')
-rw-r--r--resources/libraries/python/honeycomb/HcAPIKwInterfaces.py42
1 files changed, 41 insertions, 1 deletions
diff --git a/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py b/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py
index e8cbc78bea..92b5830847 100644
--- a/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py
+++ b/resources/libraries/python/honeycomb/HcAPIKwInterfaces.py
@@ -35,7 +35,7 @@ class InterfaceKeywords(object):
"""
INTF_PARAMS = ("name", "description", "type", "enabled",
- "link-up-down-trap-enable", "v3po:l2")
+ "link-up-down-trap-enable", "v3po:l2", "v3po:vxlan-gpe")
IPV4_PARAMS = ("enabled", "forwarding", "mtu")
IPV6_PARAMS = ("enabled", "forwarding", "mtu", "dup-addr-detect-transmits")
IPV6_AUTOCONF_PARAMS = ("create-global-addresses",
@@ -63,6 +63,12 @@ class InterfaceKeywords(object):
"match-any-inner-id",
"exact-match",
"default-subif")
+ VXLAN_GPE_PARAMS = ("local",
+ "remote",
+ "vni",
+ "next-protocol",
+ "encap-vrf-id",
+ "decap-vrf-id")
def __init__(self):
pass
@@ -1073,3 +1079,37 @@ class InterfaceKeywords(object):
if name not in names1 and name not in ignore:
raise HoneycombError("Interface {0} not present in list {1}"
.format(name, list1))
+
+ @staticmethod
+ def create_vxlan_gpe_interface(node, interface, **kwargs):
+ """Create a new VxLAN GPE interface.
+
+ :param node: Honeycomb node.
+ :param interface: The name of interface to be created.
+ :param kwargs: Parameters and their values. The accepted parameters are
+ defined in InterfaceKeywords.VXLAN_GPE_PARAMS.
+ :type node: dict
+ :type interface: str
+ :type kwargs: dict
+ :return: Content of response.
+ :rtype: bytearray
+ :raises HoneycombError: If a parameter in kwargs is not valid.
+ """
+
+ new_vxlan_gpe = {
+ "name": interface,
+ "type": "v3po:vxlan-gpe-tunnel",
+ "v3po:vxlan-gpe": {}
+ }
+ for param, value in kwargs.items():
+ if param in InterfaceKeywords.INTF_PARAMS:
+ new_vxlan_gpe[param] = value
+ elif param in InterfaceKeywords.VXLAN_GPE_PARAMS:
+ new_vxlan_gpe["v3po:vxlan-gpe"][param] = value
+ else:
+ raise HoneycombError("The parameter {0} is invalid.".
+ format(param))
+ path = ("interfaces", "interface")
+ vxlan_gpe_structure = [new_vxlan_gpe, ]
+ return InterfaceKeywords._set_interface_properties(
+ node, interface, path, vxlan_gpe_structure)