506 lines
21 KiB
Python
Executable File
506 lines
21 KiB
Python
Executable File
from PyQt5.QtWidgets import QApplication, QDialog, QFileDialog
|
|
from PyQt5.uic import loadUi
|
|
import sys, os, re
|
|
from pathlib import Path
|
|
import pandas as pd
|
|
from icecream import ic
|
|
import numpy as np
|
|
|
|
|
|
class MainUI(QDialog): # erbt von QDialog
|
|
def __init__(self):
|
|
# super (MainUI, self).__init__() #Aufrufen des Konstruktors von QDialog
|
|
super().__init__()
|
|
loadUi("Aufbaumaster2CSV.ui", self)
|
|
self.filename = None
|
|
self.path = None
|
|
self.df_vte = None
|
|
self.df_cmdb = None
|
|
self.df_vte_gg = None
|
|
self.df_vte_erw = None
|
|
self.df_cmdb_gg = None
|
|
self.df_cmdb_erw = None
|
|
self.dfb_gg = None
|
|
self.dfb_erw = None
|
|
self.openBtn.clicked.connect(self.open_file_dialog)
|
|
self.saveBtn.clicked.connect(self.save_file_dialog)
|
|
self.filter = "Hostnamen"
|
|
self.group = None
|
|
self.typ = None
|
|
self.objdict = {}
|
|
# für SFP Überarbeitung
|
|
self.configid = ''
|
|
self.i = 1
|
|
self.temp = ''
|
|
|
|
def open_file_dialog(self):
|
|
self.filename, _ = QFileDialog.getOpenFileName(
|
|
self,
|
|
"Aufbaumaster",
|
|
"\\Volumes\\Daten01\\Documents\\toCSV",
|
|
"Images (*.xls *.xlsx *.xlsb)"
|
|
)
|
|
# self.filename_edit.setPixmap(QPixmap(self.filename))
|
|
self.lblCMDBPath.setText(self.filename)
|
|
|
|
if self.filename:
|
|
self.path = Path(self.filename)
|
|
|
|
|
|
self.collect_allgemein()
|
|
self.collect_cmdb_daten_gg()
|
|
self.collect_cmdb_daten_erw()
|
|
|
|
def collect_cmdb_daten_gg(self):
|
|
# Einlesen der Sheets allgemein
|
|
|
|
# Nach relevanten Spalten filtern Grundgeraete
|
|
# Sheet VTE
|
|
self.df_vte_gg = self.df_vte[self.df_vte['Gruppierung'] == 'Grundgerät']
|
|
# Sheet CMDB
|
|
self.df_cmdb_gg = self.df_cmdb[self.df_cmdb['Filter'] == 'Grundgerät']
|
|
|
|
# Führende Leerzeichen in allen Spalten entfernen
|
|
self.df_vte_gg = self.df_vte_gg.apply(lambda x: x.str.lstrip() if x.dtype == "object" else x)
|
|
self.df_cmdb_gg = self.df_cmdb_gg.apply(lambda x: x.str.lstrip() if x.dtype == "object" else x)
|
|
|
|
# Teil Grundgeräte
|
|
self.df_cmdb_gg = self.df_cmdb_gg.drop(
|
|
columns=['WV-Start', 'WV-Ende', 'CMDB-Status', 'Aufgabe Schritt', 'Filter', 'Waermeabgabe [BTU/h]',
|
|
'kalk. Strom [A]'])
|
|
|
|
|
|
# Einfügen von Spalten in die CMDB-Tabelle
|
|
self.dfb_gg = self.df_vte_gg.merge(self.df_cmdb_gg, on=['Hostname'], how='left')
|
|
|
|
|
|
# Spalte für Mandanten Kontaktzuweisung
|
|
self.dfb_gg.insert(loc=7, column='Mandanten Kontaktzuweisung', value='Mandant')
|
|
|
|
# Spalte für Segmente
|
|
self.dfb_gg.insert(loc=8, column='Segment', value='')
|
|
|
|
# Spalte für Domains
|
|
self.dfb_gg.insert(loc=9, column='Domain', value='')
|
|
|
|
# Spalte einfügen für HE
|
|
self.dfb_gg.insert(loc=14, column='HE', value='')
|
|
|
|
# Einschub
|
|
self.dfb_gg.insert(loc=15, column='Einschub', value='')
|
|
|
|
# Montage --> nur horizontal
|
|
self.dfb_gg.insert(loc=16, column='Montage', value='horizontal')
|
|
|
|
# Formfaktor
|
|
self.dfb_gg.insert(loc=17, column='Formfaktor', value='19"')
|
|
|
|
# Masseinheit
|
|
self.dfb_gg.insert(loc=18, column='Masseinheit', value='Zoll')
|
|
|
|
# Spaltenanmen mit Sonderzeichen anzeigen
|
|
columns_with_special_chars = [col for col in self.dfb_gg.columns if self.has_special_characters(col)]
|
|
|
|
#print("Spaltenheader mit Sonderzeichen:", columns_with_special_chars)
|
|
|
|
# Führende Leerzeichen in allen Spalten entfernen
|
|
# Nach oben velegt
|
|
#self.dfb_gg = self.dfb_gg.apply(lambda x: x.str.lstrip() if x.dtype == "object" else x)
|
|
|
|
# Alle Floats in Strings umwandeln
|
|
self.dfb_gg = self.dfb_gg.applymap(lambda x: str(x) if isinstance(x, float) else x)
|
|
|
|
self.dfb_gg = self.dfb_gg.apply(self.suche_Einschub, axis=1)
|
|
|
|
self.dfb_gg = self.dfb_gg.apply(self.montageort, axis=1)
|
|
|
|
self.dfb_gg = self.dfb_gg.apply(self.pruefe_und_setze_wert, axis=1)
|
|
|
|
self.df_gg = self.dfb_gg.apply(self.anpassung_Objekttyp, axis=1)
|
|
|
|
# dictionary Config-ID zu Objekttyp
|
|
for index, row in self.df_gg.iterrows():
|
|
print ("Row ",index, " ",row["CONFIG-ID"], row['Objekttyp (CMDB)'])
|
|
self.objdict[row['CONFIG-ID']] = row['Objekttyp (CMDB)']
|
|
|
|
|
|
|
|
# Setzen von int für HE und Anz. HE
|
|
self.dfb_gg['HE'] = self.dfb_gg['HE'].apply(lambda x: x if pd.isnull(x) else str(int(x)))
|
|
|
|
def has_special_characters(self, s):
|
|
# Regex pattern für Sonderzeichen
|
|
return bool(re.search(r'[^A-Za-z0-9]', s))
|
|
|
|
def suche_Einschub(self, einschub):
|
|
if einschub['Montageort'][-1] in ('v','h'):
|
|
if einschub['Montageort'][-1] == 'v':
|
|
einschub['Einschub'] = 'Vorderseite'
|
|
else:
|
|
einschub['Einschub'] = 'Rückseite'
|
|
return einschub
|
|
|
|
def anpassung_sfp(self, sfp):
|
|
|
|
sfp['Modell'] = sfp['Modell'].rstrip()
|
|
|
|
if sfp['Modell'] == 'SFP+: 1x10 Gbit MM Rev. 4.0 mit LC Connector':
|
|
sfp['Modell'] = 'SFP+ 10GBase-SR - LC'
|
|
|
|
return sfp
|
|
|
|
def anpassung_Objekttyp(self, objekttyp):
|
|
if objekttyp['Objekttyp (CMDB)'] == 'Genucenter':
|
|
objekttyp['Objekttyp (CMDB)'] = 'C__OBJTYPE__APPLIANCE'
|
|
elif objekttyp['Objekttyp (CMDB)'] == 'HW Appliance':
|
|
objekttyp['Objekttyp (CMDB)'] = 'C__OBJTYPE__APPLIANCE'
|
|
elif objekttyp['Objekttyp (CMDB)'] == 'Paketfilter / ALG':
|
|
objekttyp['Objekttyp (CMDB)'] = 'C__OBJTYPE__APPLIANCE'
|
|
elif objekttyp['Objekttyp (CMDB)'] == 'Kryptierer':
|
|
objekttyp['Objekttyp (CMDB)'] = 'C__OBJTYPE__SD_KRYPTIERER'
|
|
elif objekttyp['Objekttyp (CMDB)'] == 'Server':
|
|
objekttyp['Objekttyp (CMDB)'] = 'C__OBJTYPE__SERVER'
|
|
elif objekttyp['Objekttyp (CMDB)'] == 'Switch':
|
|
objekttyp['Objekttyp (CMDB)'] = 'C__OBJTYPE__SWITCH'
|
|
elif objekttyp['Objekttyp (CMDB)'] == 'virtuelle Maschine':
|
|
objekttyp['Objekttyp (CMDB)'] = 'C__OBJTYPE__VIRTUAL_SERVER'
|
|
elif objekttyp['Objekttyp (CMDB)'] == 'Terminalserver':
|
|
objekttyp['Objekttyp (CMDB)'] = 'C__OBJTYPE__TERMINALSERVER'
|
|
elif objekttyp['Objekttyp (CMDB)'] == 'Storage':
|
|
objekttyp['Objekttyp (CMDB)'] = 'C__OBJTYPE__SAN'
|
|
elif objekttyp['Objekttyp (CMDB)'] == 'SFP':
|
|
objekttyp['Objekttyp (CMDB)'] = 'C__OBJTYPE__SD_SFP'
|
|
elif objekttyp['Objekttyp (CMDB)'] == 'Speichersystem':
|
|
objekttyp['Objekttyp (CMDB)'] = 'C__OBJTYPE__SAN'
|
|
elif objekttyp['Objekttyp (CMDB)'] == 'Router':
|
|
objekttyp['Objekttyp (CMDB)'] = 'C__OBJTYPE__ROUTER'
|
|
|
|
if objekttyp['Hostname'][1:3] == "vho":
|
|
objekttyp['Objekttyp (CMDB)'] = 'C__OBJTYPE__VIRTUAL_HOST'
|
|
|
|
return objekttyp
|
|
|
|
def montageort(self, montage):
|
|
|
|
# Fehlerbereinigung
|
|
# ic("Montage: ", montage)
|
|
if montage['ID\nStandort']not in ("Ber-PS", "Bon-BTW"):
|
|
print("Kein Standort P40 oder BTW")
|
|
sys.exit(0)
|
|
else:
|
|
if len((montage['Montageort'][8:13])) != 2:
|
|
montage['HE'] = montage['Montageort'][8:10]
|
|
montage['Montageort'] = montage['Montageort'][0:7]
|
|
else:
|
|
montage['HE'] = montage['Montageort'][8:10]
|
|
montage['Montageort'] = montage['Montageort'][0:7]
|
|
|
|
return montage
|
|
|
|
def korrektur_hersteller(self, hersteller):
|
|
if hersteller['Hersteller'].lower() == "cisco":
|
|
hersteller['Hersteller'] = "Cisco Systems"
|
|
elif hersteller['Hersteller'].lower() == "genua":
|
|
hersteller['Hersteller'] = "genua GmbH"
|
|
elif hersteller['Hersteller'].lower() == "digi":
|
|
hersteller['Hersteller'] = "Digi International Inc."
|
|
|
|
return hersteller
|
|
|
|
def pruefe_und_setze_wert(self, zeile):
|
|
#ic(zeile)
|
|
################################################################
|
|
if zeile['Hostname'][4:6] == "10":
|
|
zeile['ID\nMandanten'] = 'm10 CMP Plattform / iM.0 / iM.4 / PAP sIMCP'
|
|
if zeile['Hostname'][4:8] == "1011":
|
|
zeile['Domain'] = 'im0.t-cmp.de'
|
|
elif zeile['Hostname'][4:8] == "1015":
|
|
zeile['Domain'] = 'im4.t-cmp.de'
|
|
else:
|
|
zeile['Domain'] = 'mgmt.t-cmp.de'
|
|
elif zeile['Hostname'][4:6] == "19":
|
|
zeile['ID\nMandanten'] = 'm19 Testumgebung'
|
|
if zeile['Hostname'][4:8].isin("1920", "1921"):
|
|
zeile['Domain'] = 'm19.t-cmp.de'
|
|
else:
|
|
zeile['Domain'] = 'm193.t-cmp.de'
|
|
elif zeile['Hostname'][4:6] == "20":
|
|
zeile['ID\nMandanten'] = 'm20 iM.1 Interner Mandant (Schutzbedarf sehr hoch)'
|
|
zeile['Domain'] = 'im1.t-cmp.de'
|
|
elif zeile['Hostname'][4:6] == "21":
|
|
zeile['ID\nMandanten'] = 'm21 iM.2 Interner Mandant (Schutzbedarf normal)'
|
|
zeile['Domain'] = 'im2.t-cmp.de'
|
|
elif zeile['Hostname'][4:6] == "22":
|
|
zeile['ID\nMandanten'] = 'm22 iM.3 Interner Mandant (Schutzbedarf hoch)'
|
|
zeile['Domain'] = 'im3.t-cmp.de'
|
|
elif zeile['Hostname'][4:6] == "50":
|
|
zeile['ID\nMandanten'] = 'm50 sEMCP.Instanz-1 (CMP Zentral)'
|
|
zeile['Domain'] = 'm50.t-cmp.de'
|
|
elif zeile['Hostname'][4:6] == "51":
|
|
zeile['ID\nMandanten'] = 'm51 Classified OPS'
|
|
zeile['Domain'] = 'm51.t-cmp.de'
|
|
elif zeile['Hostname'][4:6] == "73":
|
|
zeile['ID\nMandanten'] = 'm73 FWP Lüftersteuerung'
|
|
zeile['Domain'] = 'm73.t-cmp.de'
|
|
elif zeile['Hostname'][4:6] == "75":
|
|
zeile['ID\nMandanten'] = 'm75 Fawkes'
|
|
zeile['Domain'] = 'm75.t-cmp.de'
|
|
elif zeile['Hostname'][4:6] == "76":
|
|
zeile['ID\nMandanten'] = 'm76 Demo'
|
|
zeile['Domain'] = 'm76.t-cmp.de'
|
|
elif zeile['Hostname'][4:6] == "77":
|
|
zeile['ID\nMandanten'] = 'm77 Fritz54'
|
|
zeile['Domain'] = 'm77.t-cmp.de'
|
|
elif zeile['Hostname'][4:6] == "78":
|
|
zeile['ID\nMandanten'] = 'm78 ITZBund mSBC'
|
|
zeile['Domain'] = 'm78.t-cmp.de'
|
|
elif zeile['Hostname'][4:6] == "79":
|
|
zeile['ID\nMandanten'] = 'm79 BOS-Spur'
|
|
zeile['Domain'] = 'm79.t-cmp.de'
|
|
elif zeile['Hostname'][4:6] == "99":
|
|
zeile['ID\nMandanten'] = 'm99 Releasemanagement'
|
|
elif zeile['Hostname'][4:6] == "80":
|
|
zeile['ID\nMandanten'] = 'm80 ACDC'
|
|
zeile['Domain'] = 'm80.t-cmp.de'
|
|
|
|
################################################################
|
|
|
|
if zeile['Hostname'][6:8] == "00":
|
|
zeile['Segment'] = 'm10 mgmt CMP Core'
|
|
elif zeile['Hostname'][6:8] == "01":
|
|
zeile['Segment'] = 'm10 mgmt Infrastructure'
|
|
elif zeile['Hostname'][6:8] == "02":
|
|
zeile['Segment'] = 'm10 mgmt Administration'
|
|
elif zeile['Hostname'][6:8] == "03":
|
|
zeile['Segment'] = 'm10 mgmt zLightsOut'
|
|
elif zeile['Hostname'][6:8] == "04":
|
|
zeile['Segment'] = 'm10 CTS'
|
|
elif zeile['Hostname'][6:8] == "05":
|
|
zeile['Segment'] = 'm10-OSS'
|
|
elif zeile['Hostname'][6:8] == "10":
|
|
zeile['Segment'] = 'm10 CMP2sIM'
|
|
elif zeile['Hostname'][6:8] == "11":
|
|
zeile['Segment'] = 'm10 Intern-CMP iM0'
|
|
elif zeile['Hostname'][6:8] == "12":
|
|
zeile['Segment'] = 'm20 iM.1 Interner Mandant 1 (SB sehr hoch)'
|
|
elif zeile['Hostname'][6:8] == "13":
|
|
zeile['Segment'] = 'm21 iM.2 Interner Mandant 2 (SB normal)'
|
|
elif zeile['Hostname'][6:8] == "14":
|
|
zeile['Segment'] = 'm22 iM.3 Interner Mandant 3 (SB hoch)'
|
|
elif zeile['Hostname'][6:8] == "15":
|
|
zeile['Segment'] = 'm10 iM.4 Interner Mandant 4 (CNMS2CMP)'
|
|
elif zeile['Hostname'][6:8] == "20":
|
|
zeile['Segment'] = 'VRD-Plattform (PAP-Anbindung)'
|
|
elif zeile['Hostname'][6:8] == "21":
|
|
zeile['Segment'] = 'VRD-Plattform (LightsOut + Basisinfrastruktur + Cache)'
|
|
elif zeile['Hostname'][6:8] == "22":
|
|
zeile['Segment'] = 'VRD-Plattform (Admin)'
|
|
elif zeile['Hostname'][6:8] == "23":
|
|
zeile['Segment'] = 'VRD-Plattform (Basisinfrastruktur Mandant zentral)'
|
|
elif zeile['Hostname'][6:8] == "24":
|
|
zeile['Segment'] = 'Spare'
|
|
elif zeile['Hostname'][6:8] == "25":
|
|
zeile['Segment'] = 'Spare'
|
|
elif zeile['Hostname'][6:8] == "26":
|
|
zeile['Segment'] = 'Spare'
|
|
elif zeile['Hostname'][6:8] == "27":
|
|
zeile['Segment'] = 'Spare'
|
|
elif zeile['Hostname'][6:8] == "28":
|
|
zeile['Segment'] = 'Spare'
|
|
elif zeile['Hostname'][6:8] == "29":
|
|
zeile['Segment'] = 'Spare'
|
|
elif zeile['Hostname'][6:8] == "30":
|
|
zeile['Segment'] = 'Spare'
|
|
elif zeile['Hostname'][6:8] == "31":
|
|
zeile['Segment'] = 'VRD-Mandant (Infrastruktur)'
|
|
elif zeile['Hostname'][6:8] == "32":
|
|
zeile['Segment'] = 'VRD-Mandant (Admin)'
|
|
elif zeile['Hostname'][6:8] == "33":
|
|
zeile['Segment'] = 'VRD-Mandant (Anbindung)'
|
|
elif zeile['Hostname'][6:8] == "34":
|
|
zeile['Segment'] = 'Spare'
|
|
elif zeile['Hostname'][6:8] == "35":
|
|
zeile['Segment'] = 'Spare'
|
|
elif zeile['Hostname'][6:8] == "36":
|
|
zeile['Segment'] = 'Spare'
|
|
elif zeile['Hostname'][6:8] == "37":
|
|
zeile['Segment'] = 'Spare'
|
|
elif zeile['Hostname'][6:8] == "38":
|
|
zeile['Segment'] = 'Spare'
|
|
elif zeile['Hostname'][6:8] == "39":
|
|
zeile['Segment'] = 'Spare'
|
|
elif zeile['Hostname'][6:8] == "40":
|
|
zeile['Segment'] = 'Spare'
|
|
elif zeile['Hostname'][6:8] == "41":
|
|
zeile['Segment'] = 'Spare'
|
|
elif zeile['Hostname'][6:8] == "42":
|
|
zeile['Segment'] = 'Spare'
|
|
elif zeile['Hostname'][6:8] == "43":
|
|
zeile['Segment'] = 'Spare'
|
|
elif zeile['Hostname'][6:8] == "44":
|
|
zeile['Segment'] = 'Spare'
|
|
elif zeile['Hostname'][6:8] == "45":
|
|
zeile['Segment'] = 'Spare'
|
|
elif zeile['Hostname'][6:8] == "46":
|
|
zeile['Segment'] = 'Spare'
|
|
elif zeile['Hostname'][6:8] == "47":
|
|
zeile['Segment'] = 'Spare'
|
|
elif zeile['Hostname'][6:8] == "48":
|
|
zeile['Segment'] = 'Spare'
|
|
elif zeile['Hostname'][6:8] == "49":
|
|
zeile['Segment'] = 'Spare'
|
|
elif zeile['Hostname'][6:8] == "50":
|
|
zeile['Segment'] = 'Spare'
|
|
elif zeile['Hostname'][6:8] == "51":
|
|
zeile['Segment'] = 'VRD-Mandant (Kundensegment Infra)'
|
|
elif zeile['Hostname'][6:8] == "52":
|
|
zeile['Segment'] = 'VRD-Mandant (Kundensegment Admin)'
|
|
elif zeile['Hostname'][6:8] == "53":
|
|
zeile['Segment'] = 'VRD-Mandant (Kundensegment)'
|
|
elif zeile['Hostname'][6:8] == "b0":
|
|
zeile['Segment'] = 'mgmt BS Übergang zum CMP Core'
|
|
elif zeile['Hostname'][6:8] == "ba":
|
|
zeile['Segment'] = 'mgmt BS Bon BTW'
|
|
elif zeile['Hostname'][6:8] == "bb":
|
|
zeile['Segment'] = 'mgmt BS Bon LRS'
|
|
elif zeile['Hostname'][6:8] == "bc":
|
|
zeile['Segment'] = 'mgmt BS Ber W55'
|
|
elif zeile['Hostname'][6:8] == "bd":
|
|
zeile['Segment'] = 'mgmt BS Ber PS'
|
|
elif zeile['Hostname'][6:8] == "be":
|
|
zeile['Segment'] = 'mgmt BS Ber NDA'
|
|
elif zeile['Hostname'][6:8] == "bf":
|
|
zeile['Segment'] = 'mgmt BS HanTMX'
|
|
elif zeile['Hostname'][6:8] == "bg":
|
|
zeile['Segment'] = 'mgmt BS Ber DS'
|
|
elif zeile['Hostname'][6:8] == "c0":
|
|
zeile['Segment'] = 'mgmt CMP Übergang Internet'
|
|
elif zeile['Hostname'][6:8] == "x1":
|
|
zeile['Segment'] = 'm10 SecA2sIM'
|
|
|
|
return zeile
|
|
|
|
def collect_cmdb_daten_erw(self):
|
|
############## Erweiterung ################################################################################
|
|
# Kopieren
|
|
self.df_vte_erw = self.df_vte
|
|
self.df_cmdb_erw = self.df_cmdb
|
|
|
|
# Führende Leerzeichen in allen Spalten entfernen
|
|
self.df_vte_erw = self.df_vte_erw.apply(lambda x: x.str.lstrip() if x.dtype == "object" else x)
|
|
self.df_cmdb_erw = self.df_cmdb_erw.apply(lambda x: x.str.lstrip() if x.dtype == "object" else x)
|
|
|
|
# Auffüllen der Spalte Hostname
|
|
self.df_vte_erw['Hostname']= self.df_vte_erw['Hostname'].replace('', np.nan)
|
|
|
|
self.df_vte_erw['Hostname'] = self.df_vte_erw['Hostname'].fillna(method='ffill')
|
|
|
|
# Nach relevanten Spalten filtern Erweiterung
|
|
self.df_vte_erw = self.df_vte_erw[self.df_vte_erw['Gruppierung'] == 'Erweiterung']
|
|
|
|
|
|
# Füllen der leeren Zellen mit NaN, sonst git es Probleme bei ffill, so konnte ich fillna nutzen
|
|
self.df_cmdb_erw['Hostname']= self.df_cmdb_erw['Hostname'].replace('', np.nan)
|
|
|
|
self.df_cmdb_erw['Hostname'] = self.df_cmdb_erw['Hostname'].fillna(method='ffill')
|
|
|
|
self.df_cmdb_erw = self.df_cmdb_erw[self.df_cmdb_erw['Filter'] == 'Erweiterung']
|
|
|
|
self.df_cmdb_erw = self.df_cmdb_erw.drop(
|
|
columns=['WV-Start', 'WV-Ende', 'CMDB-Status', 'Aufgabe Schritt', 'Filter', 'Waermeabgabe [BTU/h]',
|
|
'kalk. Strom [A]','ID\nMandanten','ESXi Host\n(beiVM)','Lagerort falls kein\nMontageort verfügbar'] )
|
|
|
|
|
|
self.dfb_erw = self.df_vte_erw.merge(self.df_cmdb_erw,left_index = True, right_index = True, how = 'left')
|
|
|
|
# Das Merge bringt zwei Hostname-Spalten, daher Bereinigung und Korrektur
|
|
self.dfb_erw = self.dfb_erw.drop(columns=['Hostname_y'])
|
|
self.dfb_erw = self.dfb_erw.rename(columns={'Hostname_x': 'Hostname'})
|
|
|
|
# Suche nur nach SFP
|
|
search = r'SFP'
|
|
|
|
self.dfb_erw = self.dfb_erw[self.dfb_erw['Modell'].str.contains(search, regex=True, na=False)]
|
|
|
|
|
|
self.dfb_erw = self.dfb_erw.apply(self.anpassung_sfp, axis=1)
|
|
|
|
self.dfb_erw = self.dfb_erw.apply(self.korrektur_hersteller, axis=1)
|
|
|
|
# Nun kann die Spalte Gruppierung raus
|
|
# CMDB Status Aufbau Rückbau ID Standort Montageort
|
|
|
|
self.dfb_erw = self.dfb_erw.drop(columns=['Gruppierung','CMDB Status','Aufbau\nRückbau','ID\nStandort','Montageort','belegte\nHE','Slot-Nr.','IP-Adresse\n(Mgmt)','IP-Adresse\n(LOM)','CPU-Kerne','RAM','Version IOS'] )
|
|
|
|
# Anapssung des Objekttypen alt, hier zu Typ SFP
|
|
#self.dfb_erw = self.dfb_erw.apply(self.anpassung_Objekttyp, axis=1)
|
|
#Neu
|
|
self.dfb_erw = self.dfb_erw.apply(self.korrektur_sfp, axis=1)
|
|
|
|
|
|
ic(self.dfb_erw)
|
|
|
|
def korrektur_sfp(self,sfp):
|
|
self.configid = sfp['CONFIG-ID']
|
|
|
|
if sfp['Serien-Nr.'] in ('', np.nan, 'bitte nachtragen'):
|
|
if self.i == 1:
|
|
sfp['Serien-Nr.'] = 'dummy' + str(self.i)
|
|
sfp['Bezeichner'] = "SFP" + str(self.i)
|
|
self.i = self.i + 1
|
|
self.temp = self.configid
|
|
sfp['Objekttyp (CMDB)']=self.read_dict(self.temp)
|
|
elif self.i !=1 and self.temp == self.configid:
|
|
sfp['Serien-Nr.'] = 'dummy' + str(self.i)
|
|
sfp['Bezeichner'] = "SFP" + str(self.i)
|
|
sfp['Objekttyp (CMDB)']=self.read_dict(self.temp)
|
|
self.i = self.i + 1
|
|
elif self.i !=1 and self.temp != self.configid:
|
|
self.i = 1
|
|
sfp['Serien-Nr.'] = 'dummy' + str(self.i)
|
|
sfp['Bezeichner'] = "SFP" + str(self.i)
|
|
self.temp = sfp['CONFIG-ID']
|
|
sfp['Objekttyp (CMDB)']=self.read_dict(self.temp)
|
|
self.i = self.i + 1
|
|
else:
|
|
if self.temp != self.configid:
|
|
sfp['Bezeichner'] = "SFP" + str(self.i)
|
|
sfp['Objekttyp (CMDB)']=self.read_dict(self.temp)
|
|
self.i = self.i + 1
|
|
self.temp = self.configid
|
|
|
|
|
|
|
|
return sfp
|
|
|
|
def read_dict(self,sfp):
|
|
for key in self.objdict.keys():
|
|
if key == sfp:
|
|
return self.objdict[key]
|
|
|
|
|
|
def save_file_dialog(self):
|
|
# ic(self.dfb_gg)
|
|
options = QFileDialog.Options()
|
|
options |= QFileDialog.DontUseNativeDialog
|
|
self.savefilename, _ = QFileDialog.getSaveFileName(self,
|
|
"Save File", "", "CSV(*.csv);;CSV Files(*.csv)",
|
|
options=options)
|
|
|
|
|
|
self.dfb_gg.to_csv(os.path.splitext(os.path.basename(self.savefilename))[0]+"_GG"+os.path.splitext(os.path.basename(self.savefilename))[1], index=None, header=True, encoding='utf-8')
|
|
self.dfb_erw.to_csv(os.path.splitext(os.path.basename(self.savefilename))[0]+"_ERW"+os.path.splitext(os.path.basename(self.savefilename))[1], index=None, header=True, encoding='utf-8')
|
|
# print("Datei wurde gespeichert:", self.savefilename)
|
|
|
|
def collect_allgemein(self):
|
|
self.df_vte = pd.read_excel(self.filename, header=7, na_filter=False, sheet_name='VTE-Input',
|
|
usecols=['Hostname', 'Gruppierung', 'CONFIG-ID', 'CMDB Status'], engine='pyxlsb')
|
|
|
|
self.df_cmdb = pd.read_excel(self.filename, header=2, sheet_name="CMDB", engine='pyxlsb')
|
|
|
|
if __name__ == "__main__":
|
|
app = QApplication(sys.argv)
|
|
ui = MainUI()
|
|
ui.show()
|
|
app.exec_()
|