SXP: Add RPC redirecting tests
[integration/test.git] / csit / libraries / Sxp.py
index 33b317fcedbe272e58bd06fa406486c158e78445..4aaf3b094f86c25a85ec6356351daf94163d699a 100644 (file)
@@ -414,11 +414,13 @@ def parse_connections(connections_json):
 
     """
     data = json.loads(connections_json)
-    connections = data['output']['connections']
-    output = []
-    for connection in connections.values():
-        output += connection
-    return output
+    output = data['output']
+    result = []
+    if output:
+        connections = output['connections']
+        for connection in connections.values():
+            result += connection
+    return result
 
 
 def find_connection(connections_json, version, mode, ip, port, state):
@@ -572,6 +574,9 @@ def add_connection_xml(version, mode, ip, port, node, password_, domain_name, bi
             <keep-alive-time>30</keep-alive-time>
             <reconciliation-time>$timeout</reconciliation-time>
             <delete-hold-down-time>$timeout</delete-hold-down-time>
+            <hold-time>90</hold-time>
+            <hold-time-max>180</hold-time-max>
+            <hold-time-min>90</hold-time-min>
          </connection-timers>
       </connection>
    </connections>
@@ -902,8 +907,8 @@ def delete_node_xml(node_id):
     return data
 
 
-def add_domain_xml(node_id, name, sgt, prefixes, origin):
-    """Generate xml for Add Domain request
+def add_domain_xml_fluorine(node_id, name, sgt, prefixes, origin):
+    """Generate xml for Add Domain request (Fluorine version: bindings with origin)
 
     :param node_id: Id of node
     :type node_id: str
@@ -918,19 +923,19 @@ def add_domain_xml(node_id, name, sgt, prefixes, origin):
     :returns: String containing xml data for request
 
     """
-    bindings = ''
-    for prefix in prefixes.split(','):
-        bindings += '\n' + '<ip-prefix>' + prefix + '</ip-prefix>'
-
     master_database = ''
-    if bindings:
-        master_database += '''<master-database>
-        <binding>
-            <sgt>$sgt</sgt>
-            $bindings
-        </binding>
-    </master-database>'''
-        master_database = Template(master_database).substitute(({'sgt': sgt, 'bindings': bindings}))
+    if prefixes != 'None':
+        xml_prefixes = ''
+        for prefix in prefixes.split(','):
+            xml_prefixes += '\n' + '<ip-prefix>' + prefix + '</ip-prefix>'
+        if xml_prefixes:
+            master_database += '''<master-database>
+            <binding>
+                <sgt>$sgt</sgt>
+                $xml_prefixes
+            </binding>
+        </master-database>'''
+            master_database = Template(master_database).substitute(({'sgt': sgt, 'xml_prefixes': xml_prefixes}))
 
     templ = Template('''<input xmlns="urn:opendaylight:sxp:controller">
     <node-id>$id</node-id>
@@ -943,6 +948,44 @@ def add_domain_xml(node_id, name, sgt, prefixes, origin):
     return data
 
 
+def add_domain_xml_oxygen(node_id, name, sgt, prefixes):
+    """Generate xml for Add Domain request (Oxygen version: bindings without origin)
+
+    :param node_id: Id of node
+    :type node_id: str
+    :param name: Name of Domain
+    :type name: str
+    :param sgt: Security group
+    :type sgt: int
+    :param prefixes: List of ip-prefixes
+    :type prefixes: str
+    :returns: String containing xml data for request
+
+    """
+    master_database = ''
+    if prefixes != 'None':
+        xml_prefixes = ''
+        for prefix in prefixes.split(','):
+            xml_prefixes += '\n' + '<ip-prefix>' + prefix + '</ip-prefix>'
+        if xml_prefixes:
+            master_database += '''<master-database>
+            <binding>
+                <sgt>$sgt</sgt>
+                $xml_prefixes
+            </binding>
+        </master-database>'''
+            master_database = Template(master_database).substitute(({'sgt': sgt, 'xml_prefixes': xml_prefixes}))
+
+    templ = Template('''<input xmlns="urn:opendaylight:sxp:controller">
+    <node-id>$id</node-id>
+    <domain-name>$name</domain-name>
+    $master_database
+</input>''')
+
+    data = templ.substitute({'name': name, 'id': node_id, 'master_database': master_database})
+    return data
+
+
 def delete_domain_xml(node_id, name):
     """Generate xml for Remove Domain request
 
@@ -953,7 +996,13 @@ def delete_domain_xml(node_id, name):
     :returns: String containing xml data for request
 
     """
-    return add_domain_xml(node_id, name)
+    templ = Template('''<input xmlns="urn:opendaylight:sxp:controller">
+    <node-id>$node_id</node-id>
+    <domain-name>$name</domain-name>
+</input>''')
+
+    data = templ.substitute({'node_id': node_id, 'name': name})
+    return data
 
 
 def get_domain_name(domain_name):
@@ -970,8 +1019,8 @@ def get_domain_name(domain_name):
         return '<domain-name xmlns="urn:opendaylight:sxp:controller">' + domain_name + '</domain-name>'
 
 
-def add_bindings_xml(node_id, domain, sgt, prefixes, origin):
-    """Generate xml for Add Bindings request
+def add_bindings_xml_fluorine(node_id, domain, sgt, prefixes, origin):
+    """Generate xml for Add Bindings request (Fluorine version with origin type)
 
     :param node_id: Id of node
     :type node_id: str
@@ -986,9 +1035,9 @@ def add_bindings_xml(node_id, domain, sgt, prefixes, origin):
     :returns: String containing xml data for request
 
     """
-    bindings = ''
+    xml_prefixes = ''
     for prefix in prefixes.split(','):
-        bindings += '\n' + '<ip-prefix>' + prefix + '</ip-prefix>'
+        xml_prefixes += '\n' + '<ip-prefix>' + prefix + '</ip-prefix>'
     templ = Template('''<input xmlns="urn:opendaylight:sxp:controller">
     <node-id>$id</node-id>
     <domain-name>$name</domain-name>
@@ -996,11 +1045,40 @@ def add_bindings_xml(node_id, domain, sgt, prefixes, origin):
     <master-database>
         <binding>
             <sgt>$sgt</sgt>
-            $bindings
+            $xml_prefixes
         </binding>
     </master-database>
 </input>''')
-    data = templ.substitute({'name': domain, 'id': node_id, 'sgt': sgt, 'bindings': bindings, 'origin': origin})
+    data = templ.substitute({'name': domain, 'id': node_id, 'sgt': sgt, 'xml_prefixes': xml_prefixes, 'origin': origin})
+    return data
+
+
+def add_bindings_xml_oxygen(node_id, domain, sgt, prefixes):
+    """Generate xml for Add Bindings request (Oxygen version without origin type)
+
+    :param node_id: Id of node
+    :type node_id: str
+    :param domain: Name of Domain
+    :type domain: str
+    :param sgt: Security group
+    :type sgt: int
+    :param prefixes: List of ip-prefixes
+    :type prefixes: str
+    :returns: String containing xml data for request
+
+    """
+    xml_prefixes = ''
+    for prefix in prefixes.split(','):
+        xml_prefixes += '\n' + '<ip-prefix>' + prefix + '</ip-prefix>'
+    templ = Template('''<input xmlns="urn:opendaylight:sxp:controller">
+    <node-id>$id</node-id>
+    <domain-name>$name</domain-name>
+        <binding>
+            <sgt>$sgt</sgt>
+            $xml_prefixes
+        </binding>
+</input>''')
+    data = templ.substitute({'name': domain, 'id': node_id, 'sgt': sgt, 'xml_prefixes': xml_prefixes})
     return data
 
 
@@ -1013,23 +1091,23 @@ def delete_bindings_xml(node_id, domain, sgt, prefixes):
     :type domain: str
     :param sgt: Security group
     :type sgt: int
-    :param prefixes: List of ip-prefixes
+    :param prefixes: Comma separated list of ip-prefixes
     :type prefixes: str
     :returns: String containing xml data for request
 
     """
-    bindings = ''
+    xml_prefixes = ''
     for prefix in prefixes.split(','):
-        bindings += '\n' + '<ip-prefix>' + prefix + '</ip-prefix>'
+        xml_prefixes += '\n' + '<ip-prefix>' + prefix + '</ip-prefix>'
     templ = Template('''<input xmlns="urn:opendaylight:sxp:controller">
     <node-id>$id</node-id>
     <domain-name>$name</domain-name>
     <binding>
         <sgt>$sgt</sgt>
-        $bindings
+        $xml_prefixes
     </binding>
 </input>''')
-    data = templ.substitute({'name': domain, 'id': node_id, 'sgt': sgt, 'bindings': bindings})
+    data = templ.substitute({'name': domain, 'id': node_id, 'sgt': sgt, 'xml_prefixes': xml_prefixes})
     return data