diff options
Diffstat (limited to 'netmap-csv.py')
-rw-r--r-- | netmap-csv.py | 33 |
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__': |