def __init__(self, uuid, record={}): ServiceBase.__init__(self, uuid, record) self.props = DefaultProperties.instance() dbconfig = self.props.getCoreDbConfig() self.exe_name = "OpenSim.exe" # self.exe_args = "--console rest" self.exe_args = "" if ((not 'sim_name' in record) or (not 'sim_location_x' in record) or (not 'sim_location_y' in record) or (not 'estate_id' in record) or (not 'master_avatar_uuid' in record)): raise ServiceError("Region: Invalid Region Information provided") self.regionEntry = None self.sim_uuid = uuid self.estate_id = record['estate_id'] self.syncEstateInfoToEstateId() self.master_avatar_uuid = record['master_avatar_uuid'] self.syncOwnerInfoToMasterAvatarId() self.sim_name = record.get("sim_name") self.set_sim_location(record.get("sim_location_x"), record.get("sim_location_y")) if ('slot_number' in record): self.slot_number = int(record.get('slot_number')) self.slot_directory = provision.GetSlotDirectory(self.slot_number) else: raise ServiceError("Create failed. No Slot Number Specified") rdbHost = GetRdbHost(dbconfig, uuid) if not rdbHost: # no info? that's ok in this case we assign print "RDB server not assigned for {0}, assigning new slot".format(uuid) rdbHost = AssignBestRdbHost(dbconfig, uuid) from inworldz.maestro.RegionHost import RegionHost self.regionHost = RegionHost.instance() self.set_external_host_name(record.get('external_host_name')) self.set_outside_ip(record.get('outside_ip')) self.set_internal_ip_address(record.get('internal_ip_address')) self.set_internal_ip_port(record.get('internal_ip_port')) self.set_allow_alternate_ports(record.get('allow_alternate_ports')) self.set_lastmap_uuid(record.get("lastmap_uuid")) self.set_lastmap_refresh(record.get("lastmap_refresh")) self.set_nonphysical_prim_max(record.get("nonphysical_prim_max")) self.set_physical_prim_max(record.get("physical_prim_max")) self.set_clamp_prim_size(record.get("clamp_prim_size")) self.set_object_capacity(record.get("object_capacity")) self.set_region_product(record.get("region_product")) self.set_remoteadmin_url(record.get("remoteadmin_url")) self.remoteadmin_session = Session(self.get_remoteadmin_url()) self.remoteadmin_sessionid = None
def __init__(self, uuid, record={}): GridServiceBase.__init__(self, uuid, record) self.user_server_port = self.props.getInteger("user_server_port") self.user_server_uri = self.props.getValue("user_server_uri") self.exe_name = "OpenSim.Grid.UserServer.exe" # self.exe_args = "--console rest" self.exe_args = "" self.set_remoteadmin_url(record.get("remoteadmin_url")) self.remoteadmin_session = Session(self.get_remoteadmin_url()) self.remoteadmin_sessionid = None
def execute(self): ''' Actually runs the specified tasklet ''' session = None try: #first parse the args which are packed in json args = None if self.parameters == None: args = None else: args = json.loads(self.parameters) #find the environment resource = ComputeResource.findById(self.dbConfig, self.resourceId) #find authentication information auth = ComputeResource.findAuth(self.dbConfig, self.resourceId) if auth == None: raise Exception( "Could not find authorization info for {0}".format( resource.internalIp)) #next grab an API instance to use for this tasklet session = Session("http://{0}:12089".format(resource.internalIp)) #attempt a login session.api.login_with_password(*auth) taskletClass = TaskletBase.resolveTaskletClass(self.tasklet) tasklet = taskletClass(args, session, self) retVal = tasklet.execute() if retVal != None: self.returnValue = retVal self.recordSuccess() except Exception: self.recordFault(traceback.format_exc()) finally: if session != None: session.api.session.logout()
def main(argv=None): '''Command line options.''' program_name = os.path.basename(sys.argv[0]) program_version = "v0.1" program_build_date = "%s" % __updated__ program_version_string = '%%prog %s (%s)' % (program_version, program_build_date) #program_usage = '''usage: spam two eggs''' # optional - will be autogenerated by optparse program_longdesc = '''''' # optional - give further explanation about what the program does program_license = "Copyright (c) 2015 InWorldz Inc. All Rights Reserved. Released under the Apache 2.0 License" if argv is None: argv = sys.argv[1:] try: # setup option parser parser = OptionParser(version=program_version_string, epilog=program_longdesc, description=program_license) parser.add_option( "-p", "--password", dest="password", help= "The password to use when connecting to the remote agent [default: %default]" ) parser.add_option( "-u", "--username", dest="username", help="The username to use when connecting [default: %default]") parser.add_option("-v", "--verbose", dest="verbose", action="count", help="set verbosity level [default: %default]") # set defaults parser.set_defaults(password="", username="", verbose=1) # process options (opts, args) = parser.parse_args(argv) if opts.verbose > 0: print("verbosity level = %d" % opts.verbose) # Set up logging logging.basicConfig(level=logging.DEBUG) # session = Session('http://127.0.0.1:9000/xmlrpc/RemoteAdmin/') # sessionid = session.api.login_with_password(opts.username, opts.password) # session.api.Region.Shutdown("1fcbcb04-c56c-4baa-babb-92666faa4a5a", 30) session = Session('http://127.0.0.1:8006/xmlrpc/RemoteAdmin/') sessionid = session.api.login_with_password(opts.username, opts.password) session.api.MessagingServer.Shutdown(30) session = Session('http://127.0.0.1:8002/xmlrpc/RemoteAdmin/') sessionid = session.api.login_with_password(opts.username, opts.password) session.api.UserServer.Shutdown(30) session = Session('http://127.0.0.1:8009/xmlrpc/RemoteAdmin/') sessionid = session.api.login_with_password(opts.username, opts.password) session.api.GridServer.Shutdown(30) except Exception, e: indent = len(program_name) * " " sys.stderr.write(program_name + ": " + repr(e) + "\n") sys.stderr.write(indent + " for help use --help") return 2
def main(argv=None): '''Command line options.''' program_name = os.path.basename(sys.argv[0]) program_version = "v0.1" program_build_date = "%s" % __updated__ program_version_string = '%%prog %s (%s)' % (program_version, program_build_date) #program_usage = '''usage: spam two eggs''' # optional - will be autogenerated by optparse program_longdesc = '''''' # optional - give further explanation about what the program does program_license = "Copyright (c) 2015 InWorldz Inc. All Rights Reserved. Released under the Apache 2.0 License" if argv is None: argv = sys.argv[1:] try: # setup option parser parser = OptionParser(version=program_version_string, epilog=program_longdesc, description=program_license) parser.add_option( "-p", "--password", dest="password", help= "The password to use when connecting to the remote agent [default: %default]" ) parser.add_option( "-u", "--username", dest="username", help="The username to use when connecting [default: %default]") parser.add_option("-v", "--verbose", dest="verbose", action="count", help="set verbosity level [default: %default]") # set defaults parser.set_defaults(password="", username="", verbose=1) # process options (opts, args) = parser.parse_args(argv) if opts.verbose > 0: print("verbosity level = %d" % opts.verbose) # Set up logging logging.basicConfig(level=logging.DEBUG) session = Session('http://127.0.0.1:12089/') sessionid = session.api.login_with_password(opts.username, opts.password) hosts = session.api.RegionHost.get_all() pprint.pprint(hosts) host = hosts[0] print "shutting down regions" regions = session.api.Region.get_all() for region in regions: print session.api.Region.Shutdown(region, 60) print "shutting down grid services" user_servers = session.api.UserServer.get_all() for user_server in user_servers: print session.api.UserServer.Shutdown(user_server, 60) msg_servers = session.api.MessagingServer.get_all() for msg_server in msg_servers: print session.api.MessagingServer.Shutdown(msg_server, 60) grid_servers = session.api.GridServer.get_all() for grid_server in grid_servers: print session.api.GridServer.Shutdown(grid_server, 60) print "Completed" session.api.session.logout() except Exception, e: indent = len(program_name) * " " sys.stderr.write(program_name + ": " + repr(e) + "\n") sys.stderr.write(indent + " for help use --help") return 2
pprint.pprint(record) print "Attempting to fetch regions asynchronously" regions = record['Regions'] for region in regions: taskid = session.api.Async.Region.Start(region, False, 120) pprint.pprint(taskid) print "Waiting for the task to complete" while session.api.task.get_status(taskid) == "pending": print "poll" time.sleep(1) task_record = session.api.task.get_record(taskid) print "The contents of the task record:" pprint.pprint(task_record) if __name__ == "__main__": if len(sys.argv) <> 4: print "Usage:" print sys.argv[0], " <url> <username> <password>" sys.exit(1) url = sys.argv[1] username = sys.argv[2] password = sys.argv[3] # First acquire a valid session by logging in: session = Session(url) session.api.login_with_password(username, password) main(session)
def main(argv=None): '''Command line options.''' program_name = os.path.basename(sys.argv[0]) program_version = "v0.1" program_build_date = "%s" % __updated__ program_version_string = '%%prog %s (%s)' % (program_version, program_build_date) #program_usage = '''usage: spam two eggs''' # optional - will be autogenerated by optparse program_longdesc = '''''' # optional - give further explanation about what the program does program_license = "Copyright (c) 2015 InWorldz Inc. All Rights Reserved. Released under the Apache 2.0 License" if argv is None: argv = sys.argv[1:] try: # setup option parser parser = OptionParser(version=program_version_string, epilog=program_longdesc, description=program_license) parser.add_option( "-p", "--password", dest="password", help= "The password to use when connecting to the remote agent [default: %default]" ) parser.add_option( "-u", "--username", dest="username", help="The username to use when connecting [default: %default]") parser.add_option("-v", "--verbose", dest="verbose", action="count", help="set verbosity level [default: %default]") # set defaults parser.set_defaults(password="", username="", verbose=1) # process options (opts, args) = parser.parse_args(argv) if opts.verbose > 0: print("verbosity level = %d" % opts.verbose) # Set up logging logging.basicConfig(level=logging.DEBUG) session = Session('http://127.0.0.1:12089/') sessionid = session.api.login_with_password(opts.username, opts.password) hosts = session.api.RegionHost.get_all() pprint.pprint(hosts) for host in hosts: record = session.api.RegionHost.get_record(host) pprint.pprint(record) #provision_region(session, host, "Test2", 1000, 1001) #return print "Get CPU" cpu = record['Cpu'] pprint.pprint(session.api.Cpu.get_record(cpu)) pprint.pprint(session.api.Cpu.cpu_percent(cpu)) pprint.pprint(session.api.Cpu.cpu_percent(cpu, 5.0, True)) pprint.pprint(session.api.Cpu.cpu_times(cpu, True)) print "Get Disk" disk = record['Disk'] pprint.pprint(session.api.Disk.get_record(disk)) pprint.pprint(session.api.Disk.disk_usage(disk, "/")) pprint.pprint(session.api.Disk.disk_io_counters(disk, True)) print "Get Memory" memory = record['Memory'] pprint.pprint(session.api.Memory.get_record(memory)) print "Get Process" process = record['Process'] pprint.pprint(session.api.Process.get_record(process)) print "fetching Regions" regions = record['Regions'] for region in regions: region_record = session.api.Region.get_record(region) pprint.pprint(region_record) if (session.api.Region.IsRunning(region) == False): print "Not Running" else: print "Running, Stopping" print session.api.Region.Shutdown(region) update_and_reconfigure_region(session, region) #print "Starting it up" #session.api.Region.Start(region) #if (session.api.Region.Shutdown(region) == False): # session.api.Region.Terminate(region) #print "Terminated" # #print "Writing Configuration for slot {0}:".format(slotnum) #print session.api.Region.ReconfigureRegion(region) # # Print Make a new copy #print "Provisioning new region" #region_record = session.api.Region.get_record(region) #region_record['sim_location_y'] = int(region_record['sim_location_y']) + 1 #print region_record #print session.api.RegionHost.ProvisionRegion(host, region_record) session.api.session.logout() except Exception, e: indent = len(program_name) * " " sys.stderr.write(program_name + ": " + repr(e) + "\n") sys.stderr.write(indent + " for help use --help") return 2