def becomeGridHost(self, *args): if self.clientObject.getLocalUser().gridHost: for uuid in self.clientObject.users: if self.clientObject.users[uuid].gridHostActive: #TODO: Allow moderators to take gridhost from others. showModalDialog( self.window, Gtk.MessageType.ERROR, 'The grid is already being hosted.' ) return #TODO: Show error dialogs on failures self.setStatus('Loading OpenSim distribution...') distribution = Distribution(self.clientObject.projectRoot, self.clientObject.externalhost, parent=self.window) d = Deferred() d.addCallback(self.startRobust) distribution.load(d) #TODO: Don't hardcode this else: showModalDialog( self.window, Gtk.MessageType.ERROR, 'You do not have permission to become the grid host.' )
def becomeGridHost(self, *args): if self.clientObject.getLocalUser().gridHost: for uuid in self.clientObject.users: if self.clientObject.users[uuid].gridHostActive: #TODO: Allow moderators to take gridhost from others. showModalDialog( self.window, Gtk.MessageType.ERROR, 'The grid is already being hosted.' ) return delta = DeltaUser(self.clientObject.getLocalUser().UUID) delta.gridHostActive = True # The delta gets applied when the server echos it back #self.clientObject.updateUser(delta) self.clientObject.protocol.writeRequest(delta) #TODO: Show error dialogs on failures self.setStatus('Loading OpenSim distribution...') distribution = Distribution(self.clientObject.projectRoot, parent=self.window) d = Deferred() d.addCallback(self.startRobust) distribution.load(d) #TODO: Don't hardcode this else: showModalDialog( self.window, Gtk.MessageType.ERROR, 'You do not have permission to become the grid host.' )
def onHostRegion(self, *args): (model, iterator) = self.regionView.get_selection().get_selected() if model is None or iterator is None: return regionName = model[iterator][0] log.msg("Trying to host region " + regionName) log.msg("Region Hosts: " + str(self.clientObject.regions[regionName].hosts)) region = self.clientObject.regions[regionName] user = self.clientObject.getLocalUser() if user.UUID in region.hosts: log.msg("Hosting region " + regionName) delta = DeltaRegion(regionName) delta.currentHost = user.UUID self.clientObject.protocol.writeRequest(delta) #TODO: Don't hardcode gridname and localhost distribution = Distribution(self.clientObject.projectRoot, self.clientObject.externalhost, parent=self.window) def hostRegion(dist): log.msg("Configuring region for hosting") # Do region-agnostic configuration dist.configure("GridName", self.clientObject.externalhost) # Do region-specific configuration self.clientObject.maxregionport += 1 dist.configureRegion(region.regionName, region.location, self.clientObject.maxregionport) # We use the convention: consolePort = port + 10000 protocol_ = process.spawnRegionProcess( dist.opensimdir, region.regionName, self.clientObject.maxregionport + 10000, self.clientObject.externalhost, callOnOutput=self.clientObject.processSimOutput) self.clientObject.processes[region.regionName] = protocol_ d = Deferred() d.addCallback(hostRegion) distribution.load(d) else: showModalDialog( self.window, Gtk.MessageType.ERROR, "Not allowed to host region.")