def __startListenning(self): """ Creates the control connection Args: None Returns: Nothing """ networkInterface = self.__parser.getConfigurationParameter( "vncNetworkInterface") listenningPort = self.__parser.getConfigurationParameter( "listenningPort") try: self.__vncServerIP = get_ip_address(networkInterface) except Exception: raise Exception( "Error: the network interface '{0}' is not ready. Exiting now". format(networkInterface)) self.__ftpTimeout = self.__parser.getConfigurationParameter( "FTPTimeout") self.__listenningPort = listenningPort self.__networkManager = NetworkManager( self.__parser.getConfigurationParameter("certificatePath")) self.__networkManager.startNetworkService() self.__useSSL = self.__parser.getConfigurationParameter("useSSL") self.__packetManager = VMServerPacketHandler(self.__networkManager) self.__connectToDatabases( "VMServerDB", self.__parser.getConfigurationParameter("databaseUserName"), self.__parser.getConfigurationParameter("databasePassword")) self.__domainHandler = DomainHandler( self.__commandsDBConnector, self.__vncServerIP, self.__networkManager, self.__packetManager, self.__listenningPort, self.__parser.getConfigurationParameter("useQEMUWebsockets"), self.__parser.getConfigurationParameter("websockifyPath"), self.__parser.getConfigurationParameter("configFilePath"), self.__parser.getConfigurationParameter("sourceImagePath"), self.__parser.getConfigurationParameter("executionImagePath"), self.__parser.getConfigurationParameter("passwordLength")) self.__domainHandler.connectToLibvirt( self.__parser.getConfigurationParameter("vncNetworkInterface"), self.__parser.getConfigurationParameter("vnName"), self.__parser.getConfigurationParameter("gatewayIP"), self.__parser.getConfigurationParameter("netMask"), self.__parser.getConfigurationParameter("dhcpStartIP"), self.__parser.getConfigurationParameter("dhcpEndIP"), self.__parser.getConfigurationParameter( "createVirtualNetworkAsRoot")) self.__domainHandler.doInitialCleanup() self.__deleteTemporaryZipFiles() self.__fileTransferThread = FileTransferThread( self.__networkManager, self.__listenningPort, self.__packetManager, self.__parser.getConfigurationParameter("TransferDirectory"), self.__parser.getConfigurationParameter("FTPTimeout"), self.__parser.getConfigurationParameter("MaxTransferAttempts"), self.__commandsDBConnector, self.__useSSL) self.__compressionThread = CompressionThread( self.__parser.getConfigurationParameter("TransferDirectory"), self.__parser.getConfigurationParameter("sourceImagePath"), self.__parser.getConfigurationParameter("configFilePath"), self.__commandsDBConnector, self.__domainHandler, self.__networkManager, self.__listenningPort, self.__packetManager) self.__fileTransferThread.start() self.__compressionThread.start() self.__networkManager.listenIn(self.__listenningPort, self, self.__useSSL)
def startListenning(self, useSSL, certificatePath, listenningPort, repositoryIP, repositoryPort, vmServerStatusUpdateInterval): """ Creates the control connection Args: useSSL: indicates if SSL encryption must be used in the control connection or not certificatePath: the directory where the server.crt and server.key files are listenningPort: the control connection's port repositoryIP: the image repository IP address repositoryPort: the image repository's port vmServerStatusUpdateInterval: the virtual machine server status database interval Returns: Nothing """ self.__networkManager = NetworkManager(certificatePath) self.__networkManager.startNetworkService() self.__listenningPort = listenningPort self.__packetHandler = ClusterServerPacketHandler( self.__networkManager) self.__useSSL = useSSL imageRepositoryPacketHandler = ImageRepositoryPacketHandler( self.__networkManager) vmServerPacketHandler = VMServerPacketHandler(self.__networkManager) networkEventsReactor = NetworkEventsReactor(self.__dbConnector, repositoryIP, repositoryPort) imageRepositoryPacketReactor = ImageRepositoryPacketReactor( self.__dbConnector, self.__networkManager, listenningPort, repositoryIP, repositoryPort, self.__packetHandler, vmServerPacketHandler, imageRepositoryPacketHandler) try: imageRepositoryCallback = ImageRepositoryCallback( imageRepositoryPacketReactor, networkEventsReactor) self.__networkManager.connectTo(repositoryIP, repositoryPort, 10, imageRepositoryCallback, self.__useSSL, True) self.__dbConnector.addImageRepository(repositoryIP, repositoryPort, SERVER_STATE_T.READY) except Exception as e: print "Can't connect to the image repository: " + e.message self.__exit = True return vmServerPacketReactor = VMServerPacketReactor(self.__dbConnector, self.__networkManager, listenningPort, vmServerPacketHandler, self.__packetHandler) self.__endpointPacketReactor = EndpointPacketReactor( self.__dbConnector, self.__networkManager, vmServerPacketHandler, self.__packetHandler, imageRepositoryPacketHandler, VMServerCallback(vmServerPacketReactor, networkEventsReactor), listenningPort, repositoryIP, repositoryPort, self.__loadBalancerSettings, self.__averageCompressionRatio, self.__useSSL) clusterEndpointCallback = ClusterEndpointCallback( self.__endpointPacketReactor) self.__networkManager.listenIn(listenningPort, clusterEndpointCallback, self.__useSSL) self.__statusMonitoringThread = ClusterStatusMonitoringThread( vmServerStatusUpdateInterval, self.__dbConnector, self.__networkManager, repositoryIP, repositoryPort, vmServerPacketHandler, imageRepositoryPacketHandler) self.__statusMonitoringThread.start()