def add_c_resources(self, slice_urn, nodes): """ Inserts one or more nodes with CRM resources information. @param slice_urn URN identifier of a given slice @param nodes Structure containing a list of CRM nodes and its attributes """ if slice_urn not in self.__stored: logger.error("Unable to find Topology info from %s!" % slice_urn) return topology = self.__stored.get(slice_urn) logger.debug("add_c_resources Nodes=%d" % (len(nodes), )) for n in nodes: logger.debug("Node=%s" % (n, )) node_ = etree.SubElement(topology, "node", id=n.get("component_id"), type="server") inner_node_ = etree.SubElement( node_, "node", id=n.get("sliver_id"), type=n.get("sliver_type_name").lower()) # Add the interface identifier of the server node here! # In the future, it will be the vlan-tagged interface of the # virtual machine (much more sense) nodekey = n.get("component_id").replace("+node+", ":") logger.debug("Node key=%s" % (nodekey, )) interfaces = db_sync_manager.get_com_interface_by_nodekey(nodekey) logger.info("Stored COM interfaces=%s" % (interfaces, )) for i in interfaces: if_index = i.rfind("interface") if_name = n.get("sliver_id") + "+" + i[if_index:len(i)] etree.SubElement(inner_node_, "interface", id=if_name) self.__mapping_c_interface[i] = if_name if len(n.get("services")) > 0: self.__add_snmp_management( inner_node_, n.get("services")[0].get("login").get("hostname"))
def add_c_resources(self, slice_urn, nodes): """ Inserts one or more nodes with CRM resources information. @param slice_urn URN identifier of a given slice @param nodes Structure containing a list of CRM nodes and its attributes """ if slice_urn not in self.__stored: logger.error("Unable to find Topology info from %s!" % slice_urn) return topology = self.__stored.get(slice_urn) logger.debug("add_c_resources Nodes=%d" % (len(nodes),)) for n in nodes: logger.debug("Node=%s" % (n,)) node_ = etree.SubElement( topology, "node", id=n.get("component_id"), type="server") inner_node_ = etree.SubElement( node_, "node", id=n.get("sliver_id"), type=n.get("sliver_type_name").lower()) # Add the interface identifier of the server node here! # In the future, it will be the vlan-tagged interface of the # virtual machine (much more sense) nodekey = n.get("component_id").replace("+node+", ":") logger.debug("Node key=%s" % (nodekey,)) interfaces = db_sync_manager.get_com_interface_by_nodekey(nodekey) logger.info("Stored COM interfaces=%s" % (interfaces,)) for i in interfaces: if_index = i.rfind("interface") if_name = n.get("sliver_id") + "+" + i[if_index:len(i)] etree.SubElement(inner_node_, "interface", id=if_name) self.__mapping_c_interface[i] = if_name if len(n.get("services")) > 0: self.__add_snmp_management( inner_node_, n.get("services")[0].get("login").get("hostname"))
def add_c_resources(self, slice_urn, nodes): """ Inserts one or more nodes with CRM resources information. @param slice_urn URN identifier of a given slice @param nodes Structure containing a list of CRM nodes and its attributes """ if slice_urn not in self.__stored: logger.error("Unable to find Topology info from %s!" % slice_urn) return topology = self.__stored.get(slice_urn) logger.debug("add_c_resources Nodes=%d" % (len(nodes),)) for n in nodes: logger.debug("Node=%s" % (n,)) node_ = etree.SubElement( topology, "node", id=n.get("component_id"), type="server") inner_node_ = etree.SubElement( node_, "node", id=n.get("sliver_id"), type=n.get("sliver_type_name").lower()) # Add the interface identifier of the server node here! # In the future, it will be the vlan-tagged interface of the # virtual machine (much more sense) nodekey = n.get("component_id").replace("+node+", ":") logger.debug("Node key=%s" % (nodekey,)) interfaces = db_sync_manager.get_com_interface_by_nodekey(nodekey) logger.info("Stored COM interfaces=%s" % (interfaces,)) for i in interfaces: if_index = i.rfind("interface") if_name = n.get("sliver_id") + "+" + i[if_index:len(i)] etree.SubElement(inner_node_, "interface", id=if_name) self.__mapping_c_interface[i] = if_name if len(n.get("services")) > 0: self.__add_snmp_management( inner_node_, n.get("services")[0].get("login").get("hostname")) # Links per node vm_cid = n.get("sliver_id") server_cid = vm_cid server_cid_split = server_cid.split(":") # Note: generate component_id of server from VM server_cid = ":".join(server_cid_split[:-2]) + \ "+node+" + server_cid_split[-2] node_links = db_sync_manager.\ get_com_link_by_src_dst_links(server_cid) for node_link in node_links: for node_link_l in node_link.get("links"): eps = {"source_id": node_link_l.get("source_id"), "dest_id": node_link_l.get("dest_id")} if MonitoringUtils.check_existing_tag_in_topology( topology, "link", self.MS_LINK_TYPE, [eps.get("source_id"), eps.get("dest_id")]): break eps_src_id, eps_dst_id = self.__get_eps_ids( eps.get("source_id"), eps.get("dest_id")) self.__add_link_info(topology, eps_src_id, eps_dst_id, "lan")