Exemple #1
0
    def _computeAutoIdlepcCallback(self, result, error=False, *args, **kwargs):
        """
        Callback for computeAutoIdlepc.

        :param result: server response
        :param error: indicates an error (boolean)
        """

        if self._project_created:
            Topology.instance().deleteProject()
            self._project_created = False
            self._router = None
        elif self._router:
            self._router.delete()
            self._router = None
        if error:
            QtWidgets.QMessageBox.critical(
                self, "Idle-PC finder", "Error: {}".format(result["message"]))
        else:
            idlepc = result["idlepc"]
            self.uiIdlepcLineEdit.setText(idlepc)
            QtWidgets.QMessageBox.information(
                self, "Idle-PC finder",
                "Idle-PC value {} has been found suitable for your IOS image".
                format(idlepc))
 def _idlePCFinderSlot(self):
     """
     Slot for the idle-PC finder.
     """
     if Topology.instance().project() is None:
         project = Topology.instance().createLoadProject({"project_name": str(uuid.uuid4())})
         project.project_updated_signal.connect(self._projectCreatedSlot)
     else:
         self._projectCreatedSlot()
Exemple #3
0
 def _idlePCFinderSlot(self):
     """
     Slot for the idle-PC finder.
     """
     if Topology.instance().project() is None:
         project = Topology.instance().createLoadProject(
             {"project_name": str(uuid.uuid4())})
         project.project_updated_signal.connect(self._projectCreatedSlot)
     else:
         self._projectCreatedSlot()
Exemple #4
0
    def _projectClosedCallback(self, result, error=False, server=None, **kwargs):

        # Status 404 could be when someone else already closed the project
        if error and "status" in result and result["status"] != 404:
            log.error("Error while closing project {}: {}".format(self._id, result["message"]))
        else:
            self.stopListenNotifications()
            log.debug("Project {} closed".format(self._id))

        self._closed = True
        self.project_closed_signal.emit()
        Topology.instance().setProject(None)
Exemple #5
0
    def _projectClosedCallback(self, result, error=False, server=None, **kwargs):

        # Status 404 could be when someone else already closed the project
        if error and "status" in result and result["status"] != 404:
            log.error("Error while closing project {}: {}".format(self._id, result["message"]))
        else:
            self.stopListenNotifications()
            log.debug("Project {} closed".format(self._id))

        self._closed = True
        self.project_closed_signal.emit()
        Topology.instance().setProject(None)
Exemple #6
0
    def _event_received(self, result, server=None, **kwargs):

        log.debug("Event received: %s", result)
        if result["action"] in ["vm.started", "vm.stopped"]:
            vm = Topology.instance().getVM(result["event"]["vm_id"])
            if vm is not None:
                if result["action"] == "vm.started":
                    vm.setStatus(Node.started)
                    vm.started_signal.emit()
                elif result["action"] == "vm.stopped":
                    vm.setStatus(Node.stopped)
                    vm.stopped_signal.emit()
        elif result["action"] == "log.error":
            log.error(result["event"]["message"])
            print("Error: " + result["event"]["message"])
        elif result["action"] == "log.warning":
            log.warning(result["event"]["message"])
            print("Warning: " + result["event"]["message"])
        elif result["action"] == "log.info":
            log.info(result["event"]["message"])
            print("Info: " + result["event"]["message"])
        elif result["action"] == "ping":
            # Compatible with 1.4.0 server
            if "event" in result:
                server.setSystemUsage(result["event"])
Exemple #7
0
    def _event_received(self, result, server=None, **kwargs):

        log.debug("Event received: %s", result)
        if result["action"] in ["vm.started", "vm.stopped"]:
            vm = Topology.instance().getVM(result["event"]["vm_id"])
            if vm is not None:
                if result["action"] == "vm.started":
                    vm.setStatus(Node.started)
                    vm.started_signal.emit()
                elif result["action"] == "vm.stopped":
                    vm.setStatus(Node.stopped)
                    vm.stopped_signal.emit()
        elif result["action"] == "log.error":
            log.error(result["event"]["message"])
            print("Error: " + result["event"]["message"])
        elif result["action"] == "log.warning":
            log.warning(result["event"]["message"])
            print("Warning: " + result["event"]["message"])
        elif result["action"] == "log.info":
            log.info(result["event"]["message"])
            print("Info: " + result["event"]["message"])
        elif result["action"] == "ping":
            # Compatible with 1.4.0 server
            if "event" in result:
                server.setSystemUsage(result["event"])
Exemple #8
0
 def _listDrawingsCallback(self, result, error=False, **kwargs):
     if error:
         log.error("Error while listing drawings: {}".format(
             result["message"]))
         return
     topo = Topology.instance()
     for drawing in result:
         topo.createDrawing(drawing)
Exemple #9
0
 def _listDrawingsCallback(self, result, error=False, **kwargs):
     if error:
         log.error("Error while listing drawings: {}".format(result["message"]))
         return
     topo = Topology.instance()
     for drawing in result:
         topo.createDrawing(drawing)
     self.project_loaded_signal.emit()
Exemple #10
0
 def _listDrawingsCallback(self, result, error=False, **kwargs):
     if error:
         log.error("Error while listing drawings: {}".format(result.get("message", "unknown")))
         return
     topo = Topology.instance()
     for drawing in result:
         topo.createDrawing(drawing)
     self.project_loaded_signal.emit()
Exemple #11
0
 def _listNodesCallback(self, result, error=False, **kwargs):
     if error:
         log.error("Error while listing project: {}".format(result.get("message", "unknown")))
         return
     topo = Topology.instance()
     for node in result:
         topo.createNode(node)
     self.get("/links", self._listLinksCallback)
Exemple #12
0
 def _listLinksCallback(self, result, error=False, **kwargs):
     if error:
         log.error("Error while listing links: {}".format(result.get("message", "unknown")))
         return
     topo = Topology.instance()
     for link in result:
         topo.createLink(link)
     self.get("/drawings", self._listDrawingsCallback)
Exemple #13
0
 def _listLinksCallback(self, result, error=False, **kwargs):
     if error:
         log.error("Error while listing links: {}".format(result["message"]))
         return
     topo = Topology.instance()
     for link in result:
         topo.createLink(link)
     self.get("/drawings", self._listDrawingsCallback)
Exemple #14
0
 def _listNodesCallback(self, result, error=False, **kwargs):
     if error:
         log.error("Error while listing project: {}".format(result["message"]))
         return
     topo = Topology.instance()
     for node in result:
         topo.createNode(node)
     self.get("/links", self._listLinksCallback)
Exemple #15
0
    def _projectCreatedSlot(self, *args):
        if Topology.instance().project() is None:
            return
        try:
            Topology.instance().project().project_updated_signal.disconnect(self._projectCreatedSlot)
            self._project_created = True
        except TypeError:
            pass  # If the slot is not connected (project already created)

        module = Dynamips.instance()
        platform = self.uiPlatformComboBox.currentText()
        ios_image = self.uiIOSImageLineEdit.text()
        ram = self.uiRamSpinBox.value()
        router_class = PLATFORM_TO_CLASS[platform]

        self._router = router_class(module, ComputeManager.instance().getCompute(self._compute_id), Topology.instance().project())
        self._router.create(ios_image, ram, name="AUTOIDLEPC")
        self._router.created_signal.connect(self.createdSlot)
        self._router.server_error_signal.connect(self.serverErrorSlot)
        self.uiIdlePCFinderPushButton.setEnabled(False)
Exemple #16
0
    def _computeAutoIdlepcCallback(self, result, error=False, *args, **kwargs):
        """
        Callback for computeAutoIdlepc.

        :param result: server response
        :param error: indicates an error (boolean)
        """

        if self._project_created:
            Topology.instance().deleteProject()
            self._project_created = False
            self._router = None
        elif self._router:
            self._router.delete()
            self._router = None
        if error:
            QtWidgets.QMessageBox.critical(self, "Idle-PC finder", "Error: {}".format(result["message"]))
        else:
            idlepc = result["idlepc"]
            self.uiIdlepcLineEdit.setText(idlepc)
            QtWidgets.QMessageBox.information(self, "Idle-PC finder", "Idle-PC value {} has been found suitable for your IOS image".format(idlepc))
Exemple #17
0
    def _projectCreatedSlot(self, *args):
        if Topology.instance().project() is None:
            return
        try:
            Topology.instance().project().project_updated_signal.disconnect(
                self._projectCreatedSlot)
            self._project_created = True
        except TypeError:
            pass  # If the slot is not connected (project already created)

        module = Dynamips.instance()
        platform = self.uiPlatformComboBox.currentText()
        ios_image = self.uiIOSImageLineEdit.text()
        ram = self.uiRamSpinBox.value()
        router_class = PLATFORM_TO_CLASS[platform]

        self._router = router_class(
            module,
            ComputeManager.instance().getCompute(self._compute_id),
            Topology.instance().project())
        self._router.create(ios_image, ram, name="AUTOIDLEPC")
        self._router.created_signal.connect(self.createdSlot)
        self._router.server_error_signal.connect(self.serverErrorSlot)
        self.uiIdlePCFinderPushButton.setEnabled(False)
Exemple #18
0
    def _event_received(self, result, **kwargs):

        log.debug("Event received: %s", result)
        if result["action"] in ["vm.started", "vm.stopped"]:
            vm = Topology.instance().getVM(result["event"]["vm_id"])
            if vm is not None:
                if result["action"] == "vm.started":
                    vm.setStatus(Node.started)
                    vm.started_signal.emit()
                elif result["action"] == "vm.stopped":
                    vm.setStatus(Node.stopped)
                    vm.stopped_signal.emit()
        elif result["action"] == "log.error":
            log.error(result["event"]["message"])
            print("Error: " + result["event"]["message"])
        elif result["action"] == "log.warning":
            log.warning(result["event"]["message"])
            print("Warning: " + result["event"]["message"])
Exemple #19
0
    def _event_received(self, result, **kwargs):

        log.debug("Event received: %s", result)
        if result["action"] in ["vm.started", "vm.stopped"]:
            vm = Topology.instance().getVM(result["event"]["vm_id"])
            if vm is not None:
                if result["action"] == "vm.started":
                    vm.setStatus(Node.started)
                    vm.started_signal.emit()
                elif result["action"] == "vm.stopped":
                    vm.setStatus(Node.stopped)
                    vm.stopped_signal.emit()
        elif result["action"] == "log.error":
            log.error(result["event"]["message"])
            print("Error: " + result["event"]["message"])
        elif result["action"] == "log.warning":
            log.warning(result["event"]["message"])
            print("Warning: " + result["event"]["message"])
Exemple #20
0
 def setUp(self):
     self.t = Topology.instance()
Exemple #21
0
 def _event_received(self, result, *args, **kwargs):
     # Log only relevant events
     if result["action"] not in ("ping", "compute.updated"):
         log.debug("Event received: %s", result)
     if result["action"] == "node.created":
         node = Topology.instance().getNodeFromUuid(
             result["event"]["node_id"])
         if node is None:
             Topology.instance().createNode(result["event"])
     elif result["action"] == "node.updated":
         node = Topology.instance().getNodeFromUuid(
             result["event"]["node_id"])
         if node is not None:
             node.updateNodeCallback(result["event"])
     elif result["action"] == "node.deleted":
         node = Topology.instance().getNodeFromUuid(
             result["event"]["node_id"])
         if node is not None:
             node.delete(skip_controller=True)
     elif result["action"] == "link.created":
         link = Topology.instance().getLinkFromUuid(
             result["event"]["link_id"])
         if link is None:
             Topology.instance().createLink(result["event"])
     elif result["action"] == "link.updated":
         link = Topology.instance().getLinkFromUuid(
             result["event"]["link_id"])
         if link is not None:
             link.updateLinkCallback(result["event"])
     elif result["action"] == "link.deleted":
         link = Topology.instance().getLinkFromUuid(
             result["event"]["link_id"])
         if link is not None:
             link.deleteLink(skip_controller=True)
     elif result["action"] == "drawing.created":
         drawing = Topology.instance().getDrawingFromUuid(
             result["event"]["drawing_id"])
         if drawing is None:
             Topology.instance().createDrawing(result["event"])
     elif result["action"] == "drawing.updated":
         drawing = Topology.instance().getDrawingFromUuid(
             result["event"]["drawing_id"])
         if drawing is not None:
             drawing.updateDrawingCallback(result["event"])
     elif result["action"] == "drawing.deleted":
         drawing = Topology.instance().getDrawingFromUuid(
             result["event"]["drawing_id"])
         if drawing is not None:
             drawing.delete(skip_controller=True)
     elif result["action"] == "project.closed":
         Topology.instance().setProject(None)
     elif result["action"] == "project.updated":
         self._projectUpdatedCallback(result["event"])
     elif result["action"] == "snapshot.restored":
         Topology.instance().createLoadProject(
             {"project_id": result["event"]["project_id"]})
     elif result["action"] == "log.error":
         log.error(result["event"]["message"])
     elif result["action"] == "log.warning":
         log.warning(result["event"]["message"])
     elif result["action"] == "log.info":
         log.info(result["event"]["message"], extra={"show": True})
     elif result["action"] == "compute.created" or result[
             "action"] == "compute.updated":
         cm = ComputeManager.instance()
         cm.computeDataReceivedCallback(result["event"])
     elif result["action"] == "settings.updated":
         LocalConfig.instance().refreshConfigFromController()
         ApplianceManager.instance().refresh()
     elif result["action"] == "ping":
         pass
Exemple #22
0
 def setUp(self):
     self.t = Topology.instance()
Exemple #23
0
    def _event_received(self, result, *args, **kwargs):

        # Log only relevant events
        if result["action"] not in ("ping"):
            log.debug("Event received from project stream: {}".format(result))
        if result["action"] == "node.created":
            node = Topology.instance().getNodeFromUuid(
                result["event"]["node_id"])
            if node is None:
                Topology.instance().createNode(result["event"])
        elif result["action"] == "node.updated":
            node = Topology.instance().getNodeFromUuid(
                result["event"]["node_id"])
            if node is not None:
                node.updateNodeCallback(result["event"])
        elif result["action"] == "node.deleted":
            node = Topology.instance().getNodeFromUuid(
                result["event"]["node_id"])
            if node is not None:
                node.delete(skip_controller=True)
        elif result["action"] == "link.created":
            link = Topology.instance().getLinkFromUuid(
                result["event"]["link_id"])
            if link is None:
                Topology.instance().createLink(result["event"])
        elif result["action"] == "link.updated":
            link = Topology.instance().getLinkFromUuid(
                result["event"]["link_id"])
            if link is not None:
                link.updateLinkCallback(result["event"])
        elif result["action"] == "link.deleted":
            link = Topology.instance().getLinkFromUuid(
                result["event"]["link_id"])
            if link is not None:
                link.deleteLink(skip_controller=True)
        elif result["action"] == "drawing.created":
            drawing = Topology.instance().getDrawingFromUuid(
                result["event"]["drawing_id"])
            if drawing is None:
                Topology.instance().createDrawing(result["event"])
        elif result["action"] == "drawing.updated":
            drawing = Topology.instance().getDrawingFromUuid(
                result["event"]["drawing_id"])
            if drawing is not None:
                drawing.updateDrawingCallback(result["event"])
        elif result["action"] == "drawing.deleted":
            drawing = Topology.instance().getDrawingFromUuid(
                result["event"]["drawing_id"])
            if drawing is not None:
                drawing.delete(skip_controller=True)
        elif result["action"] == "project.closed":
            Topology.instance().setProject(None)
        elif result["action"] == "project.updated":
            self._projectUpdatedCallback(result["event"])
        elif result["action"] == "snapshot.restored":
            Topology.instance().restoreSnapshot(result["event"]["project_id"])
        elif result["action"] == "log.error":
            log.error(result["event"]["message"])
        elif result["action"] == "log.warning":
            log.warning(result["event"]["message"])
        elif result["action"] == "log.info":
            log.info(result["event"]["message"], extra={"show": True})
        elif result["action"] == "ping":
            pass
Exemple #24
0
    def _event_received(self, result, *args, **kwargs):

        # Log only relevant events
        if result["action"] not in ("ping"):
            log.debug("Event received from project stream: {}".format(result))
        if result["action"] == "node.created":
            node = Topology.instance().getNodeFromUuid(result["event"]["node_id"])
            if node is None:
                Topology.instance().createNode(result["event"])
        elif result["action"] == "node.updated":
            node = Topology.instance().getNodeFromUuid(result["event"]["node_id"])
            if node is not None:
                node.updateNodeCallback(result["event"])
        elif result["action"] == "node.deleted":
            node = Topology.instance().getNodeFromUuid(result["event"]["node_id"])
            if node is not None:
                node.delete(skip_controller=True)
        elif result["action"] == "link.created":
            link = Topology.instance().getLinkFromUuid(result["event"]["link_id"])
            if link is None:
                Topology.instance().createLink(result["event"])
        elif result["action"] == "link.updated":
            link = Topology.instance().getLinkFromUuid(result["event"]["link_id"])
            if link is not None:
                link.updateLinkCallback(result["event"])
        elif result["action"] == "link.deleted":
            link = Topology.instance().getLinkFromUuid(result["event"]["link_id"])
            if link is not None:
                link.deleteLink(skip_controller=True)
        elif result["action"] == "drawing.created":
            drawing = Topology.instance().getDrawingFromUuid(result["event"]["drawing_id"])
            if drawing is None:
                Topology.instance().createDrawing(result["event"])
        elif result["action"] == "drawing.updated":
            drawing = Topology.instance().getDrawingFromUuid(result["event"]["drawing_id"])
            if drawing is not None:
                drawing.updateDrawingCallback(result["event"])
        elif result["action"] == "drawing.deleted":
            drawing = Topology.instance().getDrawingFromUuid(result["event"]["drawing_id"])
            if drawing is not None:
                drawing.delete(skip_controller=True)
        elif result["action"] == "project.closed":
            Topology.instance().setProject(None)
        elif result["action"] == "project.updated":
            self._projectUpdatedCallback(result["event"])
        elif result["action"] == "snapshot.restored":
            Topology.instance().createLoadProject({"project_id": result["event"]["project_id"]})
        elif result["action"] == "log.error":
            log.error(result["event"]["message"])
        elif result["action"] == "log.warning":
            log.warning(result["event"]["message"])
        elif result["action"] == "log.info":
            log.info(result["event"]["message"], extra={"show": True})
        elif result["action"] == "ping":
            pass
Exemple #25
0
 def _event_received(self, result, *args, **kwargs):
     # Log only relevant events
     if result["action"] not in ("ping", "compute.updated"):
         log.debug("Event received: %s", result)
     if result["action"] == "node.created":
         node = Topology.instance().getNodeFromUuid(result["event"]["node_id"])
         if node is None:
             Topology.instance().createNode(result["event"])
     elif result["action"] == "node.updated":
         node = Topology.instance().getNodeFromUuid(result["event"]["node_id"])
         if node is not None:
             node.updateNodeCallback(result["event"])
     elif result["action"] == "node.deleted":
         node = Topology.instance().getNodeFromUuid(result["event"]["node_id"])
         if node is not None:
             node.delete(skip_controller=True)
     elif result["action"] == "link.created":
         link = Topology.instance().getLinkFromUuid(result["event"]["link_id"])
         if link is None:
             Topology.instance().createLink(result["event"])
     elif result["action"] == "link.updated":
         link = Topology.instance().getLinkFromUuid(result["event"]["link_id"])
         if link is not None:
             link.updateLinkCallback(result["event"])
     elif result["action"] == "link.deleted":
         link = Topology.instance().getLinkFromUuid(result["event"]["link_id"])
         if link is not None:
             link.deleteLink(skip_controller=True)
     elif result["action"] == "drawing.created":
         drawing = Topology.instance().getDrawingFromUuid(result["event"]["drawing_id"])
         if drawing is None:
             Topology.instance().createDrawing(result["event"])
     elif result["action"] == "drawing.updated":
         drawing = Topology.instance().getDrawingFromUuid(result["event"]["drawing_id"])
         if drawing is not None:
             drawing.updateDrawingCallback(result["event"])
     elif result["action"] == "drawing.deleted":
         drawing = Topology.instance().getDrawingFromUuid(result["event"]["drawing_id"])
         if drawing is not None:
             drawing.delete(skip_controller=True)
     elif result["action"] == "project.closed":
         Topology.instance().setProject(None)
     elif result["action"] == "project.updated":
         self._projectUpdatedCallback(result["event"])
     elif result["action"] == "snapshot.restored":
         Topology.instance().createLoadProject({"project_id": result["event"]["project_id"]})
     elif result["action"] == "log.error":
         log.error(result["event"]["message"])
     elif result["action"] == "log.warning":
         log.warning(result["event"]["message"])
     elif result["action"] == "log.info":
         log.info(result["event"]["message"], extra={"show": True})
     elif result["action"] == "compute.created" or result["action"] == "compute.updated":
         cm = ComputeManager.instance()
         cm.computeDataReceivedCallback(result["event"])
     elif result["action"] == "settings.updated":
         LocalConfig.instance().refreshConfigFromController()
         ApplianceManager.instance().refresh()
     elif result["action"] == "ping":
         pass