Example #1
0
    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
Example #2
0
 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
Example #3
0
    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()
Example #4
0
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
Example #5
0
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
Example #6
0
    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)
 
Example #7
0
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