From d88d36b581fa7d4a24bbad8446a7d322f471ed7c Mon Sep 17 00:00:00 2001 From: Sven Riwoldt Date: Wed, 30 Oct 2024 13:48:51 +0000 Subject: [PATCH] Anpassungen wegen SFP --- CMDB2CSV_Aufbaumaster.py | 135 +++++++++++++-------------------------- 1 file changed, 44 insertions(+), 91 deletions(-) diff --git a/CMDB2CSV_Aufbaumaster.py b/CMDB2CSV_Aufbaumaster.py index d8875e6e..b72323a6 100755 --- a/CMDB2CSV_Aufbaumaster.py +++ b/CMDB2CSV_Aufbaumaster.py @@ -28,7 +28,6 @@ class MainUI(QDialog): # erbt von QDialog self.group = None self.typ = None - def open_file_dialog(self): self.filename, _ = QFileDialog.getOpenFileName( self, @@ -112,19 +111,15 @@ class MainUI(QDialog): # erbt von QDialog 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) + # 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))) - # self.dfb['belegte\nHE'] = self.dfb['belegte\nHE'].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': @@ -132,8 +127,40 @@ class MainUI(QDialog): # erbt von QDialog else: einschub['Einschub'] = 'Rückseite' return einschub + + 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"): @@ -159,8 +186,6 @@ class MainUI(QDialog): # erbt von QDialog return hersteller - - def pruefe_und_setze_wert(self, zeile): #ic(zeile) ################################################################ @@ -332,51 +357,6 @@ class MainUI(QDialog): # erbt von QDialog elif zeile['Hostname'][6:8] == "x1": zeile['Segment'] = 'm10 SecA2sIM' - ################################################################ - - # Genucenter - - # HW Appliance - - # Kryptierer - - # Medienkonverter - # Paketfilter / ALG - - # Router - C__OBJTYPE__ROUTER - # Server -- - # SFP - C__OBJTYPE__SD_SFP - - # Speichersystem C__OBJTYPE__SAN - - # Storage C__OBJTYPE__SAN - - # Switch C__OBJTYPE__SWITCH - - # virtuelle Maschine Objekttyp = C__OBJTYPE__VIRTUAL_SERVER - # Terminalserver Objekttyp = C__OBJTYPE__TERMINALSERVER - - # wenn vho dann Objekttyp = C__OBJTYPE__VIRTUAL_HOST - - - if zeile['Objekttyp (CMDB)'] == 'Genucenter': - zeile['Objekttyp (CMDB)'] = 'C__OBJTYPE__APPLIANCE' - elif zeile['Objekttyp (CMDB)'] == 'HW Appliance': - zeile['Objekttyp (CMDB)'] = 'C__OBJTYPE__APPLIANCE' - elif zeile['Objekttyp (CMDB)'] == 'Paketfilter / ALG': - zeile['Objekttyp (CMDB)'] = 'C__OBJTYPE__APPLIANCE' - elif zeile['Objekttyp (CMDB)'] == 'Kryptierer': - zeile['Objekttyp (CMDB)'] = 'C__OBJTYPE__SD_KRYPTIERER' - elif zeile['Objekttyp (CMDB)'] == 'Server': - zeile['Objekttyp (CMDB)'] = 'C__OBJTYPE__SERVER' - elif zeile['Objekttyp (CMDB)'] == 'Switch': - zeile['Objekttyp (CMDB)'] = 'C__OBJTYPE__SWITCH' - elif zeile['Objekttyp (CMDB)'] == 'virtuelle Maschine': - zeile['Objekttyp (CMDB)'] = 'C__OBJTYPE__VIRTUAL_SERVER' - elif zeile['Objekttyp (CMDB)'] == 'Terminalserver': - zeile['Objekttyp (CMDB)'] = 'C__OBJTYPE__TERMINALSERVER' - elif zeile['Objekttyp (CMDB)'] == 'Storage': - zeile['Objekttyp (CMDB)'] = 'C__OBJTYPE__SAN' - elif zeile['Objekttyp (CMDB)'] == 'SFP': - zeile['Objekttyp (CMDB)'] = 'C__OBJTYPE__SD_SFP' - elif zeile['Objekttyp (CMDB)'] == 'Speichersystem': - zeile['Objekttyp (CMDB)'] = 'C__OBJTYPE__SAN' - elif zeile['Objekttyp (CMDB)'] == 'Router': - zeile['Objekttyp (CMDB)'] = 'C__OBJTYPE__ROUTER' - - if zeile['Hostname'][1:3] == "vho": - zeile['Objekttyp (CMDB)'] = 'C__OBJTYPE__VIRTUAL_HOST' - return zeile def collect_cmdb_daten_erw(self): @@ -397,12 +377,6 @@ class MainUI(QDialog): # erbt von QDialog # Nach relevanten Spalten filtern Erweiterung self.df_vte_erw = self.df_vte_erw[self.df_vte_erw['Gruppierung'] == 'Erweiterung'] - # Auf reellen Zeilenindex setzen, ab 0 - #self.df_vte_erw = self.df_vte_erw.reset_index(drop=False) - - #debug - #self.df_vte_erw.to_csv("VTE_ERW.csv", index=None, header=True,encoding='utf-8') - # 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) @@ -416,37 +390,22 @@ class MainUI(QDialog): # erbt von QDialog 'kalk. Strom [A]']) + self.dfb_erw = self.df_vte_erw.merge(self.df_cmdb_erw,left_index = True, right_index = True, how = 'left') - - # Auf reellen Zeilenindex setzen, ab 0 - #self.df_cmdb_erw = self.df_cmdb_erw.reset_index(drop=False) - - - # debug - #self.df_cmdb_erw.to_csv("CMDB_ERW.csv", index=None, header=True, encoding='utf-8') - - - # Zusammensetzen der Tabellen mit über Index, normal brachte mehr als doppelt soviele Zeilen - #self.dfb_erw = self.df_vte_erw.merge(self.df_cmdb_erw, on=['Index'], how='left') - self.dfb_erw = self.df_vte_erw.merge(self.df_cmdb_erw,left_index = True, right_index = True, how = 'inner') - #self.dfb_erw = pd.concat([self.df_vte_erw, self.df_cmdb_erw], ignore_index=True) - #self.dfb_erw = (pd.concat([self.df_cmdb_erw, self.df_vte_erw]) - # .sort_index(kind='stable') - # .reset_index(drop=True) - # ) - - # Bereinigen der Gesamttabelle, z.Zt nur SFPs gefiltert. - # Wenn Netzteilbezeichnung vorhanden werde ich dies auch einbauen, genau wie jedes andere Zubehör auch - + # 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)] + # Anapssung des Objekttypen + self.dfb_erw = self.dfb_erw.apply(self.anpassung_Objekttyp, axis=1) + ic(self.dfb_erw) - ########################################################################################## - - def save_file_dialog(self): # ic(self.dfb_gg) options = QFileDialog.Options() @@ -456,14 +415,9 @@ class MainUI(QDialog): # erbt von QDialog options=options) - #print(os.path.splitext(os.path.basename(self.savefilename))[0]) - #print(os.path.splitext(os.path.basename(self.savefilename))[1]) - 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') - #self.savefilename+"_ERW", index=None, header=True, encoding='utf-8') - print("Datei wurde gespeichert:", self.savefilename) - +# 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', @@ -471,7 +425,6 @@ class MainUI(QDialog): # erbt von QDialog self.df_cmdb = pd.read_excel(self.filename, header=2, sheet_name="CMDB", engine='pyxlsb') - if __name__ == "__main__": app = QApplication(sys.argv) ui = MainUI()