def getInterfaceLink(session_id, interface_id): """Returns a link object for the link specified for the interface""" from crcnetd.modules.ccs_interface import ccs_interface interface = ccs_interface(session_id, interface_id) return ccs_link(session_id, interface["link_id"])
def getTemplateVariables(self): """Returns a dictionary containing template variables. Template variables contain information about this host that may be used in templates. This function attempts to be as comprehensive as possible in returning information about the host. WARNING: The returned dictionary could be very large! """ global _kernels from ccs_interface import ccs_interface, INTERFACE_TYPE_ALIAS variables = {} # Include basic properties variables.update(filter_keys(self._properties)) # Get interface information interfaces = self.getInterfaces() ilist = {} btargets = {} aliases = {} for n,iface in interfaces.items(): if iface["interface_id"] == "" or iface["interface_id"] is None: continue niface = ccs_interface(self._session_id, \ iface["interface_id"]) ifacevars = niface.getTemplateVariables() # Catch aliased interfaces here and store for later processing if iface["interface_type"] == INTERFACE_TYPE_ALIAS: if iface["raw_interface"] not in aliases.keys(): aliases[iface["raw_interface"]] = [] aliases[iface["raw_interface"]].append(ifacevars) continue ifacevars["aliases"] = [] # Handle bridge interface name resolution ifacevars["bridge_with"] = [] ifacevars["bridge_interface_name"] = "" if ifacevars["bridge_interface"]!="" and \ ifacevars["bridge_interface"]!=-1: bi = ifacevars["bridge_interface"] bt = ccs_interface(self._session_id, bi) bn = bt["name"] ifacevars["bridge_interface_name"] = bn if bn in btargets.keys(): btargets[bn].append(iface["name"]) else: btargets[bn] = [iface["name"]] # Store interface ilist[iface["name"]] = ifacevars # Setup bridge targets for ifn,iflist in btargets.items(): ilist[ifn]["bridge_with"] = iflist ilist[ifn]["bridge_interface_name"] = ifn # Setup aliases for n,iface in interfaces.items(): if iface["interface_id"] not in aliases.keys(): continue ilist[iface["name"]]["aliases"].extend( \ aliases[iface["interface_id"]]) variables["interfaces"] = ilist # Output kernel name information kid = variables["kernel_id"] variables["kernel_name"] = "%s%s" % \ (_kernels[kid]["upstream_release"], \ _kernels[kid]["local_version"]) # Get service information services = self.getServices() slist = {} for service in services: nservice = getServiceInstance(self._session_id, \ service["service_name"]) slist[service["service_name"]] = \ nservice.getTemplateVariables(self.host_id) variables["service"] = slist return variables