def wrapped_run_on_all_asics(self, *args, **kwargs): ns_list = self.multi_asic.get_ns_list_based_on_options() for ns in ns_list: self.multi_asic.current_namespace = ns self.db = multi_asic.connect_to_all_dbs_for_ns(ns) self.config_db = multi_asic.connect_config_db_for_ns(ns) func(self, *args, **kwargs)
def __init__(self): self.cfgdb_clients = {} self.db_clients = {} self.cfgdb = ConfigDBConnector() self.cfgdb.connect() self.cfgdb_pipe = ConfigDBPipeConnector() self.cfgdb_pipe.connect() self.db = SonicV2Connector(host="127.0.0.1") # Skip connecting to chassis databases in line cards self.db_list = list(self.db.get_db_list()) if not device_info.is_supervisor(): try: self.db_list.remove('CHASSIS_APP_DB') self.db_list.remove('CHASSIS_STATE_DB') except Exception: pass for db_id in self.db_list: self.db.connect(db_id) self.cfgdb_clients[constants.DEFAULT_NAMESPACE] = self.cfgdb self.db_clients[constants.DEFAULT_NAMESPACE] = self.db if multi_asic.is_multi_asic(): self.ns_list = multi_asic_ns_choices() for ns in self.ns_list: self.cfgdb_clients[ns] = ( multi_asic.connect_config_db_for_ns(ns)) self.db_clients[ns] = multi_asic.connect_to_all_dbs_for_ns(ns)
def wrapped_run_on_all_asics(self, *args, **kwargs): ns_list = self.multi_asic.get_ns_list_based_on_options() for ns in ns_list: self.multi_asic.current_namespace = ns # if object instance already has db connections, use them if self.multi_asic.db and self.multi_asic.db.cfgdb_clients.get(ns): self.config_db = self.multi_asic.db.cfgdb_clients[ns] else: self.config_db = multi_asic.connect_config_db_for_ns(ns) if self.multi_asic.db and self.multi_asic.db.db_clients.get(ns): self.db = self.multi_asic.db.db_clients[ns] else: self.db = multi_asic.connect_to_all_dbs_for_ns(ns) func(self, *args, **kwargs)
def __init__(self): self.cfgdb_clients = {} self.db_clients = {} self.cfgdb = ConfigDBConnector() self.cfgdb.connect() self.db = SonicV2Connector(host="127.0.0.1") for db_id in self.db.get_db_list(): self.db.connect(db_id) self.cfgdb_clients[constants.DEFAULT_NAMESPACE] = self.cfgdb self.db_clients[constants.DEFAULT_NAMESPACE] = self.db if multi_asic.is_multi_asic(): self.ns_list = multi_asic_ns_choices() for ns in self.ns_list: self.cfgdb_clients[ns] = ( multi_asic.connect_config_db_for_ns(ns)) self.db_clients[ns] = multi_asic.connect_to_all_dbs_for_ns(ns)
def mpls(ctx, interfacename, namespace, display): """Show Interface MPLS status""" #Edge case: Force show frontend interfaces on single asic if not (multi_asic.is_multi_asic()): if (display == 'frontend' or display == 'all' or display is None): display = None else: print("Error: Invalid display option command for single asic") return display = "all" if interfacename else display masic = multi_asic_util.MultiAsic(display_option=display, namespace_option=namespace) ns_list = masic.get_ns_list_based_on_options() intfs_data = {} intf_found = False for ns in ns_list: appl_db = multi_asic.connect_to_all_dbs_for_ns(namespace=ns) if interfacename is not None: interfacename = try_convert_interfacename_from_alias( ctx, interfacename) # Fetching data from appl_db for intfs keys = appl_db.keys(appl_db.APPL_DB, "INTF_TABLE:*") for key in keys if keys else []: tokens = key.split(":") ifname = tokens[1] # Skip INTF_TABLE entries with address information if len(tokens) != 2: continue if (interfacename is not None): if (interfacename != ifname): continue intf_found = True if (display != "all"): if ("Loopback" in ifname): continue if ifname.startswith( "Ethernet") and multi_asic.is_port_internal( ifname, ns): continue if ifname.startswith( "PortChannel") and multi_asic.is_port_channel_internal( ifname, ns): continue mpls_intf = appl_db.get_all(appl_db.APPL_DB, key) if 'mpls' not in mpls_intf or mpls_intf['mpls'] == 'disable': intfs_data.update({ifname: 'disable'}) else: intfs_data.update({ifname: mpls_intf['mpls']}) # Check if interface is valid if (interfacename is not None and not intf_found): ctx.fail('interface {} doesn`t exist'.format(interfacename)) header = ['Interface', 'MPLS State'] body = [] # Output name and alias for all interfaces for intf_name in natsorted(list(intfs_data.keys())): if clicommon.get_interface_naming_mode() == "alias": alias = clicommon.InterfaceAliasConverter().name_to_alias( intf_name) body.append([alias, intfs_data[intf_name]]) else: body.append([intf_name, intfs_data[intf_name]]) click.echo(tabulate(body, header))