Пример #1
0
 def test_file_structure(self):
     with open(self.filename) as yaml_data:
         alpha_data = yaml.load(yaml_data)
     self.assertIn('protocols', alpha_data)
     self.assertTrue(VlandProtocol.accepts(alpha_data))
     level_tuple = Protocol.select_all(alpha_data)
     self.assertEqual(len(level_tuple), 2)
     self.assertEqual(VlandProtocol, [
         item[0] for item in sorted(level_tuple, key=lambda data: data[1])
     ][1])
     vprotocol = VlandProtocol(alpha_data, self.job_id)
     self.assertIn(
         'arbit',
         vprotocol.base_group,
     )
     self.assertNotIn(
         'group',
         vprotocol.base_group,
     )
     vprotocol.set_up()
     self.assertIn('port', vprotocol.settings)
     self.assertIn('poll_delay', vprotocol.settings)
     self.assertIn('vland_hostname', vprotocol.settings)
     self.assertEqual(
         vprotocol.base_message, {
             "port": vprotocol.settings['port'],
             "poll_delay": vprotocol.settings["poll_delay"],
             "host": vprotocol.settings['vland_hostname'],
             "client_name": socket.gethostname(),
         })
     for name in vprotocol.names:
         vlan = vprotocol.params[name]
         self.assertIn('tags', vlan)
Пример #2
0
    def test_configure(self):
        with open(self.filename) as yaml_data:
            alpha_data = yaml.load(yaml_data)
        self.assertIn('protocols', alpha_data)
        self.assertTrue(VlandProtocol.accepts(alpha_data))
        vprotocol = VlandProtocol(alpha_data, self.job_id)
        vprotocol.set_up()
        with open(self.filename) as sample_job_data:
            parser = JobParser()
            job = parser.parse(sample_job_data,
                               self.device,
                               4212,
                               None,
                               "",
                               output_dir='/tmp/')
        ret = vprotocol.configure(self.device, job)
        if not ret:
            print(vprotocol.errors)
        self.assertTrue(ret)
        nodes = {}
        for name in vprotocol.names:
            vlan = vprotocol.params[name]
            # self.assertNotIn('tags', vlan)
            uid = ' '.join([vlan['switch'], str(vlan['port'])])
            nodes[uid] = name
        self.assertEqual(len(nodes.keys()), len(vprotocol.names))
        self.assertIn('vlan_one', vprotocol.names)
        self.assertNotIn('vlan_two', vprotocol.names)
        self.assertIn('switch', vprotocol.params['vlan_one'])
        self.assertIn('port', vprotocol.params['vlan_one'])
        self.assertIsNotNone(vprotocol.multinode_protocol)

        bbb2 = NewDevice(
            os.path.join(os.path.dirname(__file__), '../devices/bbb-01.yaml'))
        bbb2['parameters']['interfaces']['eth0']['switch'] = '192.168.0.2'
        bbb2['parameters']['interfaces']['eth0']['port'] = '6'
        bbb2['parameters']['interfaces']['eth1']['switch'] = '192.168.0.2'
        bbb2['parameters']['interfaces']['eth1']['port'] = '4'
        self.assertEqual(
            vprotocol.params, {
                'vlan_one': {
                    'switch': '192.168.0.1',
                    'iface': 'eth1',
                    'port': 7,
                    'tags': ['100M', 'RJ45', '10M']
                }
            })
        # already configured the vland protocol in the same job
        self.assertTrue(vprotocol.configure(bbb2, job))
        self.assertEqual(
            vprotocol.params, {
                'vlan_one': {
                    'switch': '192.168.0.1',
                    'iface': 'eth1',
                    'port': 7,
                    'tags': ['100M', 'RJ45', '10M']
                }
            })
        self.assertTrue(vprotocol.valid)
        self.assertEqual(vprotocol.names, {'vlan_one': '4212vlanone'})
Пример #3
0
 def test_file_structure(self):
     with open(self.filename) as yaml_data:
         alpha_data = yaml.load(yaml_data)
     self.assertIn('protocols', alpha_data)
     self.assertTrue(VlandProtocol.accepts(alpha_data))
     level_tuple = Protocol.select_all(alpha_data)
     self.assertEqual(len(level_tuple), 2)
     self.assertEqual(
         VlandProtocol,
         [
             item[0] for item in sorted(level_tuple, key=lambda data: data[1])
         ][1]
     )
     vprotocol = VlandProtocol(alpha_data)
     self.assertIn(
         'arbit',
         vprotocol.base_group,
     )
     self.assertNotIn(
         'group',
         vprotocol.base_group,
     )
     vprotocol.set_up()
     self.assertIn('port', vprotocol.settings)
     self.assertIn('poll_delay', vprotocol.settings)
     self.assertIn('vland_hostname', vprotocol.settings)
     self.assertEqual(
         vprotocol.base_message,
         {
             "port": vprotocol.settings['port'],
             "poll_delay": vprotocol.settings["poll_delay"],
             "host": vprotocol.settings['vland_hostname'],
             "client_name": socket.gethostname(),
         }
     )
     for name in vprotocol.names:
         vlan = vprotocol.params[name]
         self.assertIn('tags', vlan)
Пример #4
0
    def test_configure(self):
        with open(self.filename) as yaml_data:
            alpha_data = yaml.load(yaml_data)
        self.assertIn('protocols', alpha_data)
        self.assertTrue(VlandProtocol.accepts(alpha_data))
        vprotocol = VlandProtocol(alpha_data, self.job_id)
        vprotocol.set_up()
        with open(self.filename) as sample_job_data:
            parser = JobParser()
            job = parser.parse(sample_job_data, self.device, 4212, None, None, None,
                               output_dir='/tmp/')
        ret = vprotocol.configure(self.device, job)
        if not ret:
            print(vprotocol.errors)
        self.assertTrue(ret)
        nodes = {}
        for name in vprotocol.names:
            vlan = vprotocol.params[name]
            # self.assertNotIn('tags', vlan)
            uid = ' '.join([vlan['switch'], str(vlan['port'])])
            nodes[uid] = name
        self.assertEqual(len(nodes.keys()), len(vprotocol.names))
        self.assertIn('vlan_one', vprotocol.names)
        self.assertNotIn('vlan_two', vprotocol.names)
        self.assertIn('switch', vprotocol.params['vlan_one'])
        self.assertIn('port', vprotocol.params['vlan_one'])
        self.assertIsNotNone(vprotocol.multinode_protocol)

        bbb2 = NewDevice(os.path.join(os.path.dirname(__file__), '../devices/bbb-01.yaml'))
        bbb2['hostname'] = 'bbb2'
        bbb2['parameters']['interfaces']['eth0']['switch'] = '192.168.0.2'
        bbb2['parameters']['interfaces']['eth0']['port'] = '6'
        bbb2['parameters']['interfaces']['eth1']['switch'] = '192.168.0.2'
        bbb2['parameters']['interfaces']['eth1']['port'] = '4'
        self.assertEqual(
            vprotocol.params, {
                'vlan_one': {
                    'switch': '192.168.0.1', 'port': 7, 'tags': ['100M', 'RJ45', '10M']
                }
            }
        )
        # already configured the vland protocol in the same job
        self.assertTrue(vprotocol.configure(bbb2, job))
        self.assertEqual(
            vprotocol.params, {
                'vlan_one': {
                    'switch': '192.168.0.1', 'port': 7, 'tags': ['100M', 'RJ45', '10M']}
            }
        )
        self.assertTrue(vprotocol.valid)
        self.assertEqual(vprotocol.names, {'vlan_one': '4212vlanone'})
Пример #5
0
 def demo(self):
     with open(self.filename) as yaml_data:
         alpha_data = yaml.load(yaml_data)
     vprotocol = VlandProtocol(alpha_data)
     vprotocol.settings = vprotocol.read_settings()
     self.assertIn('port', vprotocol.settings)
     self.assertIn('poll_delay', vprotocol.settings)
     self.assertIn('vland_hostname', vprotocol.settings)
     vprotocol.base_message = {
         "port": vprotocol.settings['port'],
         "poll_delay": vprotocol.settings["poll_delay"],
         "host": vprotocol.settings['vland_hostname'],
         "client_name": socket.gethostname(),
     }
     count = 0
     print "\nTesting vland live using connections."
     for friendly_name in vprotocol.parameters['protocols'][vprotocol.name]:
         print "Processing VLAN: %s" % friendly_name
         vprotocol.names[friendly_name] = vprotocol.base_group + '%02d' % count
         count += 1
         vprotocol.vlans[friendly_name], tag = vprotocol._create_vlan(friendly_name)
         print "[%s] Created vlan with id %s" % (friendly_name, vprotocol.vlans[friendly_name])
         print "[%s] tag: %s" % (friendly_name, tag)
         for hostname in vprotocol.parameters['protocols'][vprotocol.name][friendly_name]:
             params = vprotocol.parameters['protocols'][vprotocol.name][friendly_name][hostname]
             print "[%s] to use switch %s and port %s" % (friendly_name, params['switch'], params['port'])
             self.assertIn('switch', params)
             self.assertIn('port', params)
             self.assertIsNotNone(params['switch'])
             self.assertIsNotNone(params['port'])
             switch_id = vprotocol._lookup_switch_id(params['switch'])
             self.assertIsNotNone(switch_id)
             print "[%s] Using switch ID %s" % (friendly_name, switch_id)
             port_id = vprotocol._lookup_port_id(switch_id, params['port'])
             print "%s Looked up port ID %s for %s" % (friendly_name, port_id, params['port'])
             vprotocol._set_port_onto_vlan(vprotocol.vlans[friendly_name], port_id)
             vprotocol.ports.append(port_id)
     print "Finalising - tearing down vlans"
     vprotocol.finalise_protocol()
Пример #6
0
 def demo(self):
     with open(self.filename) as yaml_data:
         alpha_data = yaml.load(yaml_data)
     vprotocol = VlandProtocol(alpha_data, 422)
     vprotocol.settings = vprotocol.read_settings()
     self.assertIn('port', vprotocol.settings)
     self.assertIn('poll_delay', vprotocol.settings)
     self.assertIn('vland_hostname', vprotocol.settings)
     vprotocol.base_message = {
         "port": vprotocol.settings['port'],
         "poll_delay": vprotocol.settings["poll_delay"],
         "host": vprotocol.settings['vland_hostname'],
         "client_name": socket.gethostname(),
     }
     count = 0
     print("\nTesting vland live using connections.")
     for friendly_name in vprotocol.parameters['protocols'][vprotocol.name]:
         print("Processing VLAN: %s" % friendly_name)
         vprotocol.names[
             friendly_name] = vprotocol.base_group + '%02d' % count
         count += 1
         vprotocol.vlans[friendly_name], tag = vprotocol._create_vlan(
             friendly_name)
         print("[%s] Created vlan with id %s" %
               (friendly_name, vprotocol.vlans[friendly_name]))
         print("[%s] tag: %s" % (friendly_name, tag))
         for hostname in vprotocol.parameters['protocols'][
                 vprotocol.name][friendly_name]:
             params = vprotocol.parameters['protocols'][
                 vprotocol.name][friendly_name][hostname]
             print("[%s] to use switch %s and port %s" %
                   (friendly_name, params['switch'], params['port']))
             self.assertIn('switch', params)
             self.assertIn('port', params)
             self.assertIsNotNone(params['switch'])
             self.assertIsNotNone(params['port'])
             switch_id = vprotocol._lookup_switch_id(params['switch'])
             self.assertIsNotNone(switch_id)
             print("[%s] Using switch ID %s" % (friendly_name, switch_id))
             port_id = vprotocol._lookup_port_id(switch_id, params['port'])
             print("%s Looked up port ID %s for %s" %
                   (friendly_name, port_id, params['port']))
             vprotocol._set_port_onto_vlan(vprotocol.vlans[friendly_name],
                                           port_id)
             vprotocol.ports.append(port_id)
     print("Finalising - tearing down vlans")
     vprotocol.finalise_protocol()