def disconnectFromClusterServer(self): """ Cierra la conexión con el servidor de cluster y borra las bases de datos de estado Argumentos: Ninguno Devuelve: Nada @attention: Este método debe llamarse desde el hilo principal para evitar cuelgues """ # Apagar el servidor de cluster p = self.__repositoryPacketHandler.createHaltPacket( self.__haltVMServers) errorMessage = self.__manager.sendPacket(self.__clusterServerIP, self.__clusterServerPort, p) NetworkManager.printConnectionWarningIfNecessary( self.__clusterServerIP, self.__clusterServerPort, "Cluster server halt", errorMessage) # Dejar de actualizar las bases de datos self.__updateRequestThread.stop() # Dejar de monitorizar los comandos self.__commandMonitoringThread.stop() # Cerrar las conexiones con las bases de datos self.closeNetworkAndDBConnections()
def __sendUpdateRequestPackets(self): """ Sends the update request packets to the cluster server Args: None Returns: Nothing """ if (self.__commandsProcessor.finish()) : return p = self.__packetHandler.createDataRequestPacket(PACKET_T.QUERY_VM_SERVERS_STATUS) errorMessage = self.__networkManager.sendPacket(self.__clusterServerIP, self.__clusterServerPort, p) NetworkManager.printConnectionWarningIfNecessary(self.__clusterServerIP, self.__clusterServerPort, "Virtual machine servers status", errorMessage) p = self.__packetHandler.createDataRequestPacket(PACKET_T.QUERY_VM_DISTRIBUTION) errorMessage = self.__networkManager.sendPacket(self.__clusterServerIP, self.__clusterServerPort, p) NetworkManager.printConnectionWarningIfNecessary(self.__clusterServerIP, self.__clusterServerPort, "Virtual machine distribution", errorMessage) p = self.__packetHandler.createDataRequestPacket(PACKET_T.QUERY_ACTIVE_VM_VNC_DATA) errorMessage = self.__networkManager.sendPacket(self.__clusterServerIP, self.__clusterServerPort, p) NetworkManager.printConnectionWarningIfNecessary(self.__clusterServerIP, self.__clusterServerPort, "Active virtual machines data", errorMessage) p = self.__packetHandler.createDataRequestPacket(PACKET_T.QUERY_REPOSITORY_STATUS) errorMessage = self.__networkManager.sendPacket(self.__clusterServerIP, self.__clusterServerPort, p) NetworkManager.printConnectionWarningIfNecessary(self.__clusterServerIP, self.__clusterServerPort, "Image repository status", errorMessage) p = self.__packetHandler.createDataRequestPacket(PACKET_T.QUERY_VM_SERVERS_RESOURCE_USAGE) errorMessage = self.__networkManager.sendPacket(self.__clusterServerIP, self.__clusterServerPort, p) NetworkManager.printConnectionWarningIfNecessary(self.__clusterServerIP, self.__clusterServerPort, "Virtual machine servers resource usage", errorMessage)
def __requestVNCConnectionData(self): """ Processes a VNC connection data request packet Args: data: a dictionary containing the incoming packet's data Returns: Nothing """ p = self.__vmServerPacketHandler.createVMServerDataRequestPacket(VMSRVR_PACKET_T.QUERY_ACTIVE_VM_DATA) connectionData = self.__commandsDBConnector.getActiveVMServersConnectionData() for cd in connectionData : errorMessage = self.__networkManager.sendPacket(cd["ServerIP"], cd["ServerPort"], p) NetworkManager.printConnectionWarningIfNecessary(cd["ServerIP"], cd["ServerPort"], "VNC connection data request", errorMessage)
def __sendStatusRequestToVMServer(self, vmServerIP, vmServerPort): """ Sends a status request packet to a virtual machine server Args: vmServerIP : the virtual machine server's IP address vmServerPort: the virtual machine server control connection's port Returns: Nothing """ p = self.__vmServerPacketHandler.createVMServerDataRequestPacket(VMSRVR_PACKET_T.SERVER_STATUS_REQUEST) errorMessage = self.__networkManager.sendPacket(vmServerIP, vmServerPort, p) NetworkManager.printConnectionWarningIfNecessary(vmServerIP, vmServerPort, "status request", errorMessage) p = self.__vmServerPacketHandler.createVMServerDataRequestPacket(VMSRVR_PACKET_T.QUERY_ACTIVE_DOMAIN_UIDS) errorMessage = self.__networkManager.sendPacket(vmServerIP, vmServerPort, p) NetworkManager.printConnectionWarningIfNecessary(vmServerIP, vmServerPort, "active domain UIDs request", errorMessage)
def disconnectFromClusterServer(self): """ Closes the connection with the cluster server Args: None Devuelve: Nada """ p = self.__packetHandler.createHaltPacket(self.__commandsProcessor.haltVMServers()) errorMessage = self.__networkManager.sendPacket(self.__clusterServerIP, self.__clusterServerPort, p) NetworkManager.printConnectionWarningIfNecessary(self.__clusterServerIP, self.__clusterServerPort, "Cluster server halt", errorMessage) self.__updateRequestThread.stop() self.__commandExecutionThread.stop() self.closeNetworkConnections()
def __requestVNCConnectionData(self): """ Processes a VNC connection data request packet Args: data: a dictionary containing the incoming packet's data Returns: Nothing """ p = self.__vmServerPacketHandler.createVMServerDataRequestPacket( VMSRVR_PACKET_T.QUERY_ACTIVE_VM_DATA) connectionData = self.__commandsDBConnector.getActiveVMServersConnectionData( ) for cd in connectionData: errorMessage = self.__networkManager.sendPacket( cd["ServerIP"], cd["ServerPort"], p) NetworkManager.printConnectionWarningIfNecessary( cd["ServerIP"], cd["ServerPort"], "VNC connection data request", errorMessage)
def disconnectFromClusterServer(self): """ Closes the connection with the cluster server Args: None Devuelve: Nada """ p = self.__packetHandler.createHaltPacket( self.__commandsProcessor.haltVMServers()) errorMessage = self.__networkManager.sendPacket( self.__clusterServerIP, self.__clusterServerPort, p) NetworkManager.printConnectionWarningIfNecessary( self.__clusterServerIP, self.__clusterServerPort, "Cluster server halt", errorMessage) self.__updateRequestThread.stop() self.__commandExecutionThread.stop() self.closeNetworkConnections()
def _sendUpdateRequestPackets(self): """ Solicita información de estado al serividor de cluster Argumentos: Ninguno Devuelve: Nada """ if (self.__stopped): return # Enviamos paquetes para obtener los tres tipos de información que necesitamos para actualizar la base de datos de estado p = self.__repositoryPacketHandler.createDataRequestPacket( PACKET_T.QUERY_VM_SERVERS_STATUS) errorMessage = self.__manager.sendPacket(self.__clusterServerIP, self.__clusterServerPort, p) NetworkManager.printConnectionWarningIfNecessary( self.__clusterServerIP, self.__clusterServerPort, "Virtual machine servers status", errorMessage) p = self.__repositoryPacketHandler.createDataRequestPacket( PACKET_T.QUERY_VM_DISTRIBUTION) errorMessage = self.__manager.sendPacket(self.__clusterServerIP, self.__clusterServerPort, p) NetworkManager.printConnectionWarningIfNecessary( self.__clusterServerIP, self.__clusterServerPort, "Virtual machine distribution", errorMessage) p = self.__repositoryPacketHandler.createDataRequestPacket( PACKET_T.QUERY_ACTIVE_VM_DATA) errorMessage = self.__manager.sendPacket(self.__clusterServerIP, self.__clusterServerPort, p) NetworkManager.printConnectionWarningIfNecessary( self.__clusterServerIP, self.__clusterServerPort, "Active virtual machines data", errorMessage)
def __sendStatusRequestToVMServer(self, vmServerIP, vmServerPort): """ Sends a status request packet to a virtual machine server Args: vmServerIP : the virtual machine server's IP address vmServerPort: the virtual machine server control connection's port Returns: Nothing """ p = self.__vmServerPacketHandler.createVMServerDataRequestPacket( VMSRVR_PACKET_T.SERVER_STATUS_REQUEST) errorMessage = self.__networkManager.sendPacket( vmServerIP, vmServerPort, p) NetworkManager.printConnectionWarningIfNecessary( vmServerIP, vmServerPort, "status request", errorMessage) p = self.__vmServerPacketHandler.createVMServerDataRequestPacket( VMSRVR_PACKET_T.QUERY_ACTIVE_DOMAIN_UIDS) errorMessage = self.__networkManager.sendPacket( vmServerIP, vmServerPort, p) NetworkManager.printConnectionWarningIfNecessary( vmServerIP, vmServerPort, "active domain UIDs request", errorMessage)
def disconnectFromClusterServer(self): """ Cierra la conexión con el servidor de cluster y borra las bases de datos de estado Argumentos: Ninguno Devuelve: Nada @attention: Este método debe llamarse desde el hilo principal para evitar cuelgues """ # Apagar el servidor de cluster p = self.__repositoryPacketHandler.createHaltPacket(self.__haltVMServers) errorMessage = self.__manager.sendPacket(self.__clusterServerIP, self.__clusterServerPort, p) NetworkManager.printConnectionWarningIfNecessary(self.__clusterServerIP, self.__clusterServerPort, "Cluster server halt", errorMessage) # Dejar de actualizar las bases de datos self.__updateRequestThread.stop() # Dejar de monitorizar los comandos self.__commandMonitoringThread.stop() # Cerrar las conexiones con las bases de datos self.closeNetworkAndDBConnections()
def _sendUpdateRequestPackets(self): """ Solicita información de estado al serividor de cluster Argumentos: Ninguno Devuelve: Nada """ if (self.__stopped) : return # Enviamos paquetes para obtener los tres tipos de información que necesitamos para actualizar la base de datos de estado p = self.__repositoryPacketHandler.createDataRequestPacket(PACKET_T.QUERY_VM_SERVERS_STATUS) errorMessage = self.__manager.sendPacket(self.__clusterServerIP, self.__clusterServerPort, p) NetworkManager.printConnectionWarningIfNecessary(self.__clusterServerIP, self.__clusterServerPort, "Virtual machine servers status", errorMessage) p = self.__repositoryPacketHandler.createDataRequestPacket(PACKET_T.QUERY_VM_DISTRIBUTION) errorMessage = self.__manager.sendPacket(self.__clusterServerIP, self.__clusterServerPort, p) NetworkManager.printConnectionWarningIfNecessary(self.__clusterServerIP, self.__clusterServerPort, "Virtual machine distribution", errorMessage) p = self.__repositoryPacketHandler.createDataRequestPacket(PACKET_T.QUERY_ACTIVE_VM_DATA) errorMessage = self.__manager.sendPacket(self.__clusterServerIP, self.__clusterServerPort, p) NetworkManager.printConnectionWarningIfNecessary(self.__clusterServerIP, self.__clusterServerPort, "Active virtual machines data", errorMessage)