示例#1
0
    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"))
示例#2
0
    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"))
示例#3
0
    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")