Commit 2c229ccfa1d31d901a9e895d471449b08dfb2df8
Exists in
master
Gravação e testes das redes
Showing
4 changed files
with
53 additions
and
2 deletions
Show diff stats
| @@ -0,0 +1,31 @@ | @@ -0,0 +1,31 @@ | ||
| 1 | +#!/bin/env python | ||
| 2 | +# -*- coding: utf-8 -*- | ||
| 3 | +__author__ = 'eduardo' | ||
| 4 | +import csv | ||
| 5 | +from .model.network import Network | ||
| 6 | + | ||
| 7 | + | ||
| 8 | +class NetworkCSV(object): | ||
| 9 | + """ | ||
| 10 | + Arquivo CSV das redes | ||
| 11 | + """ | ||
| 12 | + def __init__(self, | ||
| 13 | + csv_file): | ||
| 14 | + """ | ||
| 15 | + Parse do arquivo CSV | ||
| 16 | + :param csv_file: Arquivo CSV para abrir | ||
| 17 | + """ | ||
| 18 | + self.csv_file = csv_file | ||
| 19 | + | ||
| 20 | + def parse_csv(self): | ||
| 21 | + with open(self.csv_file, 'rb') as csvfile: | ||
| 22 | + saida = list() | ||
| 23 | + network_csv = csv.reader(csvfile, delimiter=';') | ||
| 24 | + for row in network_csv: | ||
| 25 | + network = Network( | ||
| 26 | + network_ip=row[0], | ||
| 27 | + netmask=row[1] | ||
| 28 | + ) | ||
| 29 | + saida.append(network) | ||
| 30 | + | ||
| 31 | + return saida | ||
| 0 | \ No newline at end of file | 32 | \ No newline at end of file |
cocar/model/network.py
| 1 | #!/bin/env python | 1 | #!/bin/env python |
| 2 | # -*- coding: utf-8 -*- | 2 | # -*- coding: utf-8 -*- |
| 3 | __author__ = 'eduardo' | 3 | __author__ = 'eduardo' |
| 4 | -import os.path | ||
| 5 | -from .. import Cocar | ||
| 6 | from netaddr import IPNetwork, IPSet | 4 | from netaddr import IPNetwork, IPSet |
| 7 | from ..model import Base | 5 | from ..model import Base |
| 8 | from sqlalchemy.schema import Column | 6 | from sqlalchemy.schema import Column |
cocar/tests/test_persistence.py
| @@ -5,6 +5,7 @@ __author__ = 'eduardo' | @@ -5,6 +5,7 @@ __author__ = 'eduardo' | ||
| 5 | import unittest | 5 | import unittest |
| 6 | import cocar.tests | 6 | import cocar.tests |
| 7 | from ..xml_utils import NmapXML | 7 | from ..xml_utils import NmapXML |
| 8 | +from..csv_utils import NetworkCSV | ||
| 8 | from ..model.computer import Computer | 9 | from ..model.computer import Computer |
| 9 | from ..model.printer import Printer | 10 | from ..model.printer import Printer |
| 10 | from ..model.network import Network | 11 | from ..model.network import Network |
| @@ -22,6 +23,7 @@ class TestPersistence(unittest.TestCase): | @@ -22,6 +23,7 @@ class TestPersistence(unittest.TestCase): | ||
| 22 | self.network_file = cocar.tests.test_dir + "/fixtures/192.168.0.0-24.xml" | 23 | self.network_file = cocar.tests.test_dir + "/fixtures/192.168.0.0-24.xml" |
| 23 | self.localhost_file = cocar.tests.test_dir + "/fixtures/127.0.0.1.xml" | 24 | self.localhost_file = cocar.tests.test_dir + "/fixtures/127.0.0.1.xml" |
| 24 | self.printer_file = cocar.tests.test_dir + "/fixtures/printer.xml" | 25 | self.printer_file = cocar.tests.test_dir + "/fixtures/printer.xml" |
| 26 | + self.network_csv = cocar.tests.test_dir + "/fixtures/networks.csv" | ||
| 25 | self.session = cocar.tests.cocar.Session | 27 | self.session = cocar.tests.cocar.Session |
| 26 | 28 | ||
| 27 | def test_connect(self): | 29 | def test_connect(self): |
| @@ -88,6 +90,23 @@ class TestPersistence(unittest.TestCase): | @@ -88,6 +90,23 @@ class TestPersistence(unittest.TestCase): | ||
| 88 | results = self.session.query(Network).first() | 90 | results = self.session.query(Network).first() |
| 89 | self.assertIsNotNone(results) | 91 | self.assertIsNotNone(results) |
| 90 | 92 | ||
| 93 | + def test_load_networks(self): | ||
| 94 | + """ | ||
| 95 | + Carrega no banco redes oriundas de arquivo CSV | ||
| 96 | + """ | ||
| 97 | + network_csv = NetworkCSV(csv_file=self.network_csv) | ||
| 98 | + network = network_csv.parse_csv() | ||
| 99 | + self.assertIsInstance(network[0], Network) | ||
| 100 | + | ||
| 101 | + for elm in network: | ||
| 102 | + self.assertIsInstance(elm, Network) | ||
| 103 | + self.session.add(elm) | ||
| 104 | + | ||
| 105 | + self.session.flush() | ||
| 106 | + # Tenta ver se gravou | ||
| 107 | + results = self.session.query(Network).first() | ||
| 108 | + self.assertIsNotNone(results) | ||
| 109 | + | ||
| 91 | def tearDown(self): | 110 | def tearDown(self): |
| 92 | """ | 111 | """ |
| 93 | Remove dados | 112 | Remove dados |