summaryrefslogtreecommitdiff
path: root/netmap-csv.py
diff options
context:
space:
mode:
Diffstat (limited to 'netmap-csv.py')
-rw-r--r--netmap-csv.py33
1 files changed, 32 insertions, 1 deletions
diff --git a/netmap-csv.py b/netmap-csv.py
index 3944ae5..fc4216b 100644
--- a/netmap-csv.py
+++ b/netmap-csv.py
@@ -20,10 +20,41 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301, USA.
#
-#
+#
+
+import csv
+import yaml
+import argparse
def main(args):
+ parser = argparse.ArgumentParser(description='network map CSV import')
+ parser.add_argument(
+ '--input', metavar='FILE', type=str,
+ dest='filename',
+ help='CSV file')
+ args = parser.parse_args()
+ rows = []
+ network = {}
+ with open(args.filename, 'r') as csvfile:
+ content = csv.DictReader(csvfile)
+ for row in content:
+ rows.append(row)
+ for row in rows:
+ for key, value in row.items():
+ if key == 'Switch' and value and 'Switch Port' in row:
+ network.setdefault('switches', {})
+ network['switches'].setdefault(str(value), [])
+ data = {'port': row['Switch Port']}
+ data['device'] = {
+ 'interface': row['Device eth port'],
+ 'mac': row['Device eth MAC/unique ID'],
+ 'sysfs': '',
+ 'hostname': row['Device'].replace('*', '')
+ }
+ network['switches'][str(value)].append(data)
+ with open('./output/output.yaml', 'w') as output:
+ yaml.dump(network, output, default_flow_style=False)
return 0
if __name__ == '__main__':