Add IxNextgen API for creating BGP protocol layer 09/63209/4
authorOleksandr Naumets <oleksandrx.naumets@intel.com>
Fri, 5 Oct 2018 14:58:30 +0000 (15:58 +0100)
committerOleksandr Naumets <oleksandrx.naumets@intel.com>
Wed, 10 Oct 2018 09:30:47 +0000 (09:30 +0000)
Added functionality to create BGP protocol layer for device group

JIRA: YARDSTICK-1465

Change-Id: Ib18b979ce09589b5eda438f01f4f8845295e4c71
Signed-off-by: Oleksandr Naumets <oleksandrx.naumets@intel.com>
yardstick/network_services/libs/ixia_libs/ixnet/ixnet_api.py
yardstick/tests/unit/network_services/libs/ixia_libs/test_ixnet_api.py

index cf625d4..feff321 100644 (file)
@@ -798,3 +798,29 @@ class IxNextgen(object):  # pragma: no cover
 
         self.ixnet.commit()
         return obj
+
+    def add_bgp(self, ipv4, dut_ip, local_as, bgp_type=None):
+        """Add BGP protocol"""
+        log.debug("add_bgp: ipv4='%s', dut_ip='%s', local_as='%s'", ipv4,
+                  dut_ip, local_as)
+        obj = self.ixnet.add(ipv4, 'bgpIpv4Peer')
+        self.ixnet.commit()
+
+        # Set DUT IP address
+        dut_ip_addr = self.ixnet.getAttribute(obj, '-dutIp')
+        self.ixnet.setAttribute(dut_ip_addr + '/singleValue',
+                                '-value', dut_ip)
+
+        # Set local AS number
+        local_as_number = self.ixnet.getAttribute(obj, '-localAs2Bytes')
+        self.ixnet.setAttribute(local_as_number + '/singleValue',
+                                '-value', local_as)
+
+        if bgp_type:
+            # Set BGP type. If not specified, default value is using.
+            # Default type is "internal"
+            bgp_type_field = self.ixnet.getAttribute(obj, '-type')
+            self.ixnet.setAttribute(bgp_type_field + '/singleValue',
+                                    '-value', bgp_type)
+        self.ixnet.commit()
+        return obj
index 01ed4e3..dd66f5f 100644 (file)
@@ -334,6 +334,21 @@ class TestIxNextgen(unittest.TestCase):
 
         self.ixnet_gen.ixnet.setMultiAttribute.assert_not_called()
 
+    def test_add_bgp(self):
+        self.ixnet_gen.ixnet.add.return_value = 'obj'
+        self.ixnet_gen.ixnet.getAttribute.return_value = 'attr'
+        self.ixnet_gen.add_bgp(ipv4='ipv4 1',
+                               dut_ip='10.0.0.1',
+                               local_as=65000,
+                               bgp_type='external')
+        self.ixnet_gen.ixnet.add.assert_called_once_with('ipv4 1', 'bgpIpv4Peer')
+        self.ixnet_gen.ixnet.setAttribute.assert_any_call(
+            'attr/singleValue', '-value', '10.0.0.1')
+        self.ixnet_gen.ixnet.setAttribute.assert_any_call(
+            'attr/singleValue', '-value', 65000)
+        self.ixnet_gen.ixnet.setAttribute.assert_any_call(
+            'attr/singleValue', '-value', 'external')
+
     @mock.patch.object(IxNetwork, 'IxNet')
     def test_connect(self, mock_ixnet):
         mock_ixnet.return_value = self.ixnet