def Terminate(self): """ Shutdown the region after sending an Alert and delaying for a specified interval """ p = provision._findRegionProcess(self.slot_number) if (p == None): return (True) p.terminate() if inworldz.util.process.WaitForProcessTermination(p, 30): self.ChangeState(RegionState.DeployedStopped) return True else: return False
def Shutdown(self, delay=60, terminateWait=60): """ Shutdown the region after sending an Alert and delaying for a specified interval """ if (not self.IsRunning()): #not an error. this is perfectly fine. the region is already down so we have nothing to do return True self.establishRemoteAdminApiCredentials() self.remoteadmin_session.api.Region.Shutdown(self.get_uuid(), delay) p = provision._findRegionProcess(self.slot_number) if inworldz.util.process.WaitForProcessTermination(p, terminateWait): self.ChangeState(RegionState.DeployedStopped) return True else: return False
def destroy(self): p = provision._findRegionProcess(self.slot_number) if p: raise ServiceError("Cannot destroy a running region") """ Zap the config file """ regionDir = os.path.join(provision.GetSlotDirectory(self.slot_number), "bin", "Regions") configFile = os.path.join(regionDir, self.get_name_label() + ".xml") if (os.path.exists(configFile)): os.remove(configFile) self.regionEntry.unprovision() """ Remove our Entry in the Host """ self.regionHost.region_del(self.get_uuid()) ServiceBase.destroy(self)
def Start(self, restart=False, delay=60): """ Requests a start/restart of the managed sim node with an alert and a delay. If restart is False nothing is done if we are already running. If True and the region is running an alert is sent and the region restarted after the delay. """ p = provision._findRegionProcess(self.slot_number) if p != None: if (restart == False): return (True) else: self.Shutdown(delay) """" Make sure there is a region config here... """ bindir = os.path.join(self.slot_directory, "bin") exename = os.path.join(bindir, self.exe_name) exeargs = self.exe_args p = self.regionHost.RunCommandEx(bindir, exename, exeargs) if p != None: self.ChangeState(RegionState.DeployedRunning) return True else: return False
def DumpThreadStacks(self): p = provision._findRegionProcess(self.slot_number) return inworldz.util.process.DumpThreadStacks(p.pid)
def IsRunning(self): """ Is this simulator currently running? """ p = provision._findRegionProcess(self.slot_number) return p != None
def get_handle_count(self): p = provision._findRegionProcess(self.slot_number) if p != None: return p.get_num_handles() else: return 0
def get_memory_used(self): p = provision._findRegionProcess(self.slot_number) if p != None: return p.get_memory_info()[1] else: return 0
def get_cpu_used_percentage(self): p = provision._findRegionProcess(self.slot_number) if p != None: return p.get_cpu_percent() else: return 0.0