Source code for nettoolkit.pyVig.cablings


import pandas as pd
from .general import *



# ----------------------------------------------------------------------------------------------------
# A single device cabling details.
# ----------------------------------------------------------------------------------------------------
[docs] class ADevCablings(): """A single Device Cabling details Args: self_device (str): device hostname (self) """ def __init__(self, self_device, **kwargs): """Object Initializer for A single device cabling details. """ self.self_device = self_device self.cablings = {} self.cablings['a_device'] = [] self.cablings['b_device'] = [] self.cablings['aport'] = [] self.cablings['bport'] = [] self.cablings['a_media_type'] = [] self.cablings['b_media_type'] = [] self.cabling_mandatory_columns = set(self.cablings.keys()) self.cabling_optional_columns = {'connector_type', 'color', 'weight', 'pattern',} self.connector_type, self.color, self.weight, self.pattern = DEFAULT_CONNECTOR_TYPE, DEFAULT_LINE_COLOR, DEFAULT_LINE_WT, DEFAULT_LINE_PATTERN self.update_attrib(**kwargs)
[docs] def update_attrib(self, **kwargs): """update object attributes """ for k, v in kwargs.items(): if v is not None: self.__dict__[k] = v
[docs] def add_to_cablings(self, **kwargs): """add provided keyword arguments to cablings (dictionary) """ mandatory_col_maps = { 'b_device': 'nbr_hostname' , 'aport': 'interface', 'bport': 'nbr_interface', 'a_media_type': 'media_type', } # for k in self.cablings: if k == 'a_device': self.cablings[k].append(self.self_device) elif k in ( 'b_media_type'): self.cablings[k].append("") elif k in self.cabling_mandatory_columns: try: self.cablings[k].append(kwargs[mandatory_col_maps[k]]) except: self.cablings[k].append("") if k != 'b_device' and k != 'a_media_type': print(f"[-] Mandatory requirement missing, df gen may fails {k}") for k in self.cabling_optional_columns: try: if k in kwargs: if k not in self.cablings: self.cablings[k] = [] self.cablings[k].append(kwargs[k]) # else set detaults ------ elif k == 'connector_type': self.cablings[k].append(self.connector_type) elif k == 'color': self.cablings[k].append(self.color) elif k == 'weight': self.cablings[k].append(self.weight) elif k == 'pattern': self.cablings[k].append(self.pattern) except: if k not in self.cablings: self.cablings[k] = [] self.cablings[k].append("")
[docs] def cabling_dataframe(self): """generate the dataframe for the cablings details captured in cablings dictionary of self. Returns: DataFrame: Pandas DataFrame object """ df = pd.DataFrame(self.cablings) df = drop_empty(df, column='b_device') self.merged_df = df return df
# ---------------------------------------------