Beispiel #1
0
def reset(global_objects, soft = True) :
    '''
    TBD
    '''
    try :
        _msg = "Killing all processes..."
        print _msg,
        _proc_man =  ProcessManagement()
        _proc_man.run_os_command("pkill -9 -u " + global_objects["space"]["username"] + " -f cbact")
        _proc_man.run_os_command("pkill -9 -u " + global_objects["space"]["username"] + " -f cloud-api")
        _proc_man.run_os_command("pkill -9 -u " + global_objects["space"]["username"] + " -f cloud-gui")        
        _proc_man.run_os_command("pkill -9 -u " + global_objects["space"]["username"] + " -f ai-")
        _proc_man.run_os_command("pkill -9 -u " + global_objects["space"]["username"] + " -f vm-")
        _proc_man.run_os_command("pkill -9 -u " + global_objects["space"]["username"] + " -f submit-")
        _proc_man.run_os_command("pkill -9 -u " + global_objects["space"]["username"] + " -f capture-")
        _proc_man.run_os_command("pkill -9 -u " + global_objects["space"]["username"] + " -f gmetad.py")
        _proc_man.run_os_command("pkill -9 -u " + global_objects["space"]["username"] + " -f gtkCBUI_")
        print "done"

        _proc_man.run_os_command("screen -wipe")

        _msg = "Flushing Object Store..." 
        print _msg,
        _rmc = RedisMgdConn(global_objects["objectstore"])
        _rmc.flush_object_store()
        print "done"
        
        if not soft :
            _msg = "Flushing Metric Store..."
            print _msg,
            _mmc = MongodbMgdConn(global_objects["metricstore"])
            _mmc.flush_metric_store(global_objects["mon_defaults"]["username"])
            print "done"

            _msg = "Flushing Log Store..."
            print _msg,
            _proc_man.run_os_command("pkill -9 -u " + global_objects["space"]["username"] + " -f rsyslogd")
            _file_list = []
            _file_list.append("operations.log")
            _file_list.append("report.log")
            _file_list.append("submmiter.log")
            _file_list.append("loadmanager.log")
            _file_list.append("gui.log")
            _file_list.append("remotescripts.log")
            _file_list.append("monitor.log")
            _file_list.append("subscribe.log")

            for _fn in  _file_list :
                _proc_man.run_os_command("rm -rf " + global_objects["space"]["stores_working_dir"] + "/logs/" + _fn)                    

            _status, _msg = syslog_logstore_setup(global_objects, "check")
            print "done"

        _msg = ""
        _status = 0

    except ProcessManagement.ProcessManagementException, obj :
        _status = str(obj.status)
        _msg = str(obj.msg)
Beispiel #2
0
def reset(global_objects, soft = True) :
    '''
    TBD
    '''
    try :
        _msg = "Killing all processes..."
        print _msg,
        _proc_man =  ProcessManagement()
        _proc_man.run_os_command("pkill -9 -u " + global_objects["space"]["username"] + " -f cbact")
        _proc_man.run_os_command("pkill -9 -u " + global_objects["space"]["username"] + " -f cloud-")
        _proc_man.run_os_command("pkill -9 -u " + global_objects["space"]["username"] + " -f ai-")
        _proc_man.run_os_command("pkill -9 -u " + global_objects["space"]["username"] + " -f vm-")
        _proc_man.run_os_command("pkill -9 -u " + global_objects["space"]["username"] + " -f submit-")
        _proc_man.run_os_command("pkill -9 -u " + global_objects["space"]["username"] + " -f capture-")
        _proc_man.run_os_command("pkill -9 -u " + global_objects["space"]["username"] + " -f gmetad.py")
        print "done"

        _proc_man.run_os_command("screen -wipe")

        _msg = "Flushing Object Store..." 
        print _msg,
        _rmc = RedisMgdConn(global_objects["objectstore"])
        _rmc.flush_object_store()
        print "done"
        
        if not soft :
            _msg = "Flushing Metric Store..."
            print _msg,
            _mmc = MongodbMgdConn(global_objects["metricstore"])
            _mmc.flush_metric_store(global_objects["mon_defaults"]["username"])
            print "done"

            _msg = "Flushing Log Store..."
            print _msg,
            _proc_man.run_os_command("pkill -9 -u " + global_objects["space"]["username"] + " -f rsyslogd")
            _proc_man.run_os_command("rm " + global_objects["space"]["stores_working_dir"] + "/logs/*.log")
            _status, _msg = syslog_logstore_setup(global_objects, "check")
            print "done"

        _msg = ""
        _status = 0

    except ProcessManagement.ProcessManagementException, obj :
        _status = str(obj.status)
        _msg = str(obj.msg)
def reset(global_objects, soft=True):
    '''
    TBD
    '''
    try:

        _stores_wk_dir = global_objects["space"]["stores_working_dir"]
        _log_dir = global_objects["space"]["log_dir"]
        _username = global_objects["space"]["username"]
        _logstore_username = global_objects["logstore"]["username"]
        _filestore_username = global_objects["filestore"]["username"]

        _filestore_config_file_fn = _stores_wk_dir + '/' + _filestore_username + "_rsync.conf"

        _msg = "Killing all processes..."
        print _msg,
        _proc_man = ProcessManagement()
        _proc_man.run_os_command("pkill -9 -u " + _username + " -f cbact")
        _proc_man.run_os_command("pkill -9 -u " + _username + " -f cloud-api")
        _proc_man.run_os_command("pkill -9 -u " + _username + " -f cloud-gui")
        _proc_man.run_os_command("pkill -9 -u " + _username + " -f ai-")
        _proc_man.run_os_command("pkill -9 -u " + _username + " -f vm-")
        _proc_man.run_os_command("pkill -9 -u " + _username + " -f submit-")
        _proc_man.run_os_command("pkill -9 -u " + _username + " -f capture-")
        _proc_man.run_os_command("pkill -9 -u " + _username + " -f gmetad.py")
        _proc_man.run_os_command("pkill -9 -u " + _username + " -f gtkCBUI_")
        print "done"

        _proc_man.run_os_command("screen -wipe")

        _proc_man.run_os_command("rm -rf /tmp/restart_cb*" +
                                 global_objects["logstore"]["username"])
        _proc_man.run_os_command("rm -rf /tmp/" + _username +
                                 "_*-*-*-*-*_avg_acc")

        _msg = "Flushing Object Store..."
        print _msg,
        _rmc = RedisMgdConn(global_objects["objectstore"])
        _rmc.flush_object_store()
        print "done"

        _msg = "Flushing Log Store..."
        print _msg,
        _proc_man.run_os_command("pkill -9 -u " + _logstore_username +
                                 " -f rsyslogd")
        _file_list = []
        _file_list.append("operations.log")
        _file_list.append("report.log")
        _file_list.append("submmiter.log")
        _file_list.append("loadmanager.log")
        _file_list.append("gui.log")
        _file_list.append("remotescripts.log")
        _file_list.append("messages.log")
        _file_list.append("monitor.log")
        _file_list.append("subscribe.log")

        for _fn in _file_list:
            _proc_man.run_os_command("rm -rf " + _log_dir + '/' +
                                     _logstore_username + '_' + _fn)
            _proc_man.run_os_command("touch " + _log_dir + '/' +
                                     _logstore_username + '_' + _fn)
        _status, _msg = syslog_logstore_setup(global_objects, "check")

        global_objects["logstore"]["just_restarted"] = True

        print "done\n"

        #_msg = "Flushing File Store..."
        #print _msg,
        #_proc_man.run_os_command("sudo pkill -9 -u root -f \"rsync --daemon --config " + _filestore_config_file_fn +"\"", raise_exception = False)
        #_proc_man.run_os_command("sudo rm -rf " + _stores_wk_dir + '/' + _filestore_username + "_rsyncd.pid")

        #_status, _msg = rsync_filestore_setup(global_objects, "check")
        #print "done"

        if not soft:
            _msg = "Flushing Metric Store..."
            print _msg,
            _mmc = MongodbMgdConn(global_objects["metricstore"])
            _mmc.flush_metric_store(global_objects["mon_defaults"]["username"])
            print "done"

        _msg = ""
        _status = 0

    except ProcessManagement.ProcessManagementException, obj:
        _status = str(obj.status)
        _msg = str(obj.msg)
def mongodb_metricstore_setup(global_objects, operation="check"):
    '''
    TBD
    '''
    _protocol = global_objects["metricstore"]["protocol"]
    _hostname = global_objects["metricstore"]["host"]
    _databaseid = global_objects["metricstore"]["database"]
    _timeout = float(global_objects["metricstore"]["timeout"])
    _username = global_objects["mon_defaults"]["username"]
    _usage = global_objects["metricstore"]["usage"].lower()

    try:
        if operation == "check":

            if _usage == "shared":

                _hostport = int(global_objects["metricstore"]["port"])

                if not pre_check_port(_hostname, _hostport, _protocol):
                    _proc_man = ProcessManagement(username="******")
                    _mongodb_pid = _proc_man.get_pid_from_cmdline("mongod -f")

                    _cmd = "/usr/local/bin/mongod -f /etc/mongod.conf --pidfilepath /var/run/mongod.pid"
                    if not _mongodb_pid:
                        _msg = "Unable to detect a shared MongoDB server daemon running. "
                        _msg += "Please try to start one (e.g., " + _cmd + ")"
                        print _msg
                        exit(8)

            else:
                _usage = "private"

                _config_file_fn = global_objects["space"][
                    "stores_working_dir"] + '/' + _username + "_mongod.conf"
                _cmd = "mkdir -p " + global_objects["space"][
                    "stores_working_dir"] + "/logs; mongod -f " + _config_file_fn + " --pidfilepath " + global_objects[
                        "space"]["stores_working_dir"] + "/mongod.pid"

                _proc_man = ProcessManagement(username=_username)
                _mongodb_pid = _proc_man.get_pid_from_cmdline("mongod -f")

                if not _mongodb_pid:
                    global_objects["metricstore"][
                        "port"] = _proc_man.get_free_port(
                            global_objects["metricstore"]["port"],
                            protocol="tcp")
                    _hostport = int(global_objects["metricstore"]["port"])

                    _config_file_contents = global_objects["metricstore"][
                        "config_string"].replace('_', ' ')
                    _config_file_contents = _config_file_contents.replace(
                        "REPLPORT", str(_hostport))
                    _config_file_contents = _config_file_contents.replace(
                        "REPLSTORESWORKINGDIR",
                        global_objects["space"]["stores_working_dir"])
                    _config_file_contents = _config_file_contents.replace(
                        "--", '=')
                    _config_file_contents = _config_file_contents.replace(
                        ';', '\n')

                    _config_file_fn = global_objects["space"][
                        "stores_working_dir"] + '/' + _username + "_mongod.conf"
                    _config_file_fd = open(_config_file_fn, 'w')
                    _config_file_fd.write(_config_file_contents)
                    _config_file_fd.close()

                    _mongodb_pid = _proc_man.start_daemon(_cmd)

                    sleep(5)

                    if not _mongodb_pid:
                        _msg = "Unable to detect a private MongoDB server daemon running. "
                        _msg += "Please try to start one (e.g., " + _cmd + ")"
                        print _msg
                        exit(8)

                else:
                    global_objects["metricstore"][
                        "port"] = _proc_man.get_port_from_pid(_mongodb_pid[0])
                    _hostport = int(global_objects["metricstore"]["port"])

            _nh_conn = Nethashget(_hostname)

            _nh_conn.nmap(_hostport, _protocol)
            _msg = "A Metric Store of the kind \"MongoDB\" (" + _usage + ") "
            _msg += "on node " + _hostname + ", " + _protocol
            _msg += " port " + str(_hostport) + ", database id \"" + str(
                _databaseid)
            _msg += "\" seems to be running."
            cbdebug(_msg)
            _status = 0

        else:
            operation = "initialize"
            _mmc = MongodbMgdConn(global_objects["metricstore"])
            _mmc.initialize_metric_store(_username)

            _msg = "The Metric Store of the kind \"MongoDB\" was successfully initialized "
            _msg += "on node: " + str(global_objects["metricstore"])
            cbdebug(_msg)
            _status = 0

            _status = 0

        return _status, _msg

    except ProcessManagement.ProcessManagementException, obj:
        _status = str(obj.status)
        _msg = str(obj.msg)
        raise StoreSetupException(_msg, 9)
def reset(global_objects, soft = True) :
    '''
    TBD
    '''
    try :

        _stores_wk_dir = global_objects["space"]["stores_working_dir"]
        _log_dir = global_objects["space"]["log_dir"]
        _username = global_objects["space"]["username"]
        _logstore_username = global_objects["logstore"]["username"]
        _filestore_username = global_objects["filestore"]["username"]
        
        _filestore_config_file_fn = _stores_wk_dir + '/' + _filestore_username + "_rsync.conf"
            
        _msg = "Killing all processes..."
        print _msg,
        _proc_man =  ProcessManagement()
        _proc_man.run_os_command("pkill -9 -u " + _username + " -f cbact")
        _proc_man.run_os_command("pkill -9 -u " + _username + " -f cloud-api")
        _proc_man.run_os_command("pkill -9 -u " + _username + " -f cloud-gui")        
        _proc_man.run_os_command("pkill -9 -u " + _username + " -f ai-")
        _proc_man.run_os_command("pkill -9 -u " + _username + " -f vm-")
        _proc_man.run_os_command("pkill -9 -u " + _username + " -f submit-")
        _proc_man.run_os_command("pkill -9 -u " + _username + " -f capture-")
        _proc_man.run_os_command("pkill -9 -u " + _username + " -f gmetad.py")
        _proc_man.run_os_command("pkill -9 -u " + _username + " -f gtkCBUI_")
        print "done"

        _proc_man.run_os_command("screen -wipe")

        _proc_man.run_os_command("rm -rf /tmp/restart_cb*" + global_objects["logstore"]["username"])
        _proc_man.run_os_command("rm -rf /tmp/*-*-*-*-*_avg_acc")
        
        _msg = "Flushing Object Store..." 
        print _msg,
        _rmc = RedisMgdConn(global_objects["objectstore"])
        _rmc.flush_object_store()
        print "done"

        _msg = "Flushing Log Store..."
        print _msg,
        _proc_man.run_os_command("pkill -9 -u " + _logstore_username + " -f rsyslogd")
        _file_list = []
        _file_list.append("operations.log")
        _file_list.append("report.log")
        _file_list.append("submmiter.log")
        _file_list.append("loadmanager.log")
        _file_list.append("gui.log")
        _file_list.append("remotescripts.log")
        _file_list.append("messages.log")            
        _file_list.append("monitor.log")
        _file_list.append("subscribe.log")

        for _fn in  _file_list :
            _proc_man.run_os_command("rm -rf " + _log_dir + '/' + _logstore_username + '_' + _fn)
            _proc_man.run_os_command("touch " + _log_dir + '/' + _logstore_username + '_' + _fn)
        _status, _msg = syslog_logstore_setup(global_objects, "check")
        
        global_objects["logstore"]["just_restarted"] = True
        
        print "done\n"
        
        #_msg = "Flushing File Store..."
        #print _msg,
        #_proc_man.run_os_command("sudo pkill -9 -u root -f \"rsync --daemon --config " + _filestore_config_file_fn +"\"", raise_exception = False)
        #_proc_man.run_os_command("sudo rm -rf " + _stores_wk_dir + '/' + _filestore_username + "_rsyncd.pid")

        #_status, _msg = rsync_filestore_setup(global_objects, "check")
        #print "done"
        
        if not soft :
            _msg = "Flushing Metric Store..."
            print _msg,
            _mmc = MongodbMgdConn(global_objects["metricstore"])
            _mmc.flush_metric_store(global_objects["mon_defaults"]["username"])
            print "done"
                        
        _msg = ""
        _status = 0

    except ProcessManagement.ProcessManagementException, obj :
        _status = str(obj.status)
        _msg = str(obj.msg)
def mongodb_metricstore_setup(global_objects, operation = "check") :
    '''
    TBD
    '''
    _protocol = global_objects["metricstore"]["protocol"]
    _hostname = global_objects["metricstore"]["host"]
    _databaseid = global_objects["metricstore"]["database"]
    _timeout = float(global_objects["metricstore"]["timeout"])
    _username = global_objects["mon_defaults"]["username"]
    _usage = global_objects["metricstore"]["usage"].lower()

    try :
        if operation == "check" :

            if _usage == "shared" :          

                _hostport = int(global_objects["metricstore"]["port"])
                
                if not pre_check_port(_hostname, _hostport, _protocol) :
                    _proc_man =  ProcessManagement(username = "******")
                    _mongodb_pid = _proc_man.get_pid_from_cmdline("mongod -f")
    
                    _cmd = "/usr/local/bin/mongod -f /etc/mongod.conf --pidfilepath /var/run/mongod.pid"
                    if not _mongodb_pid :
                        _msg = "Unable to detect a shared MongoDB server daemon running. "
                        _msg += "Please try to start one (e.g., " + _cmd + ")"                    
                        print _msg
                        exit(8)

            else :
                _usage = "private"

                _config_file_fn = global_objects["space"]["stores_working_dir"] + '/' + _username + "_mongod.conf"
                _cmd = "mkdir -p " + global_objects["space"]["stores_working_dir"]  + "/logs; mongod -f " + _config_file_fn + " --pidfilepath " + global_objects["space"]["stores_working_dir"] + "/mongod.pid"
    
                _proc_man =  ProcessManagement(username = _username)
                _mongodb_pid = _proc_man.get_pid_from_cmdline("mongod -f")

                if not _mongodb_pid :
                    global_objects["metricstore"]["port"] = _proc_man.get_free_port(global_objects["metricstore"]["port"], protocol = "tcp")
                    _hostport = int(global_objects["metricstore"]["port"])

                    _config_file_contents = global_objects["metricstore"]["config_string"].replace('_', ' ')
                    _config_file_contents = _config_file_contents.replace("REPLPORT", str(_hostport))
                    _config_file_contents = _config_file_contents.replace("REPLSTORESWORKINGDIR", global_objects["space"]["stores_working_dir"])
                    _config_file_contents = _config_file_contents.replace("--", '=')
                    _config_file_contents = _config_file_contents.replace(';','\n')

                    _config_file_fn = global_objects["space"]["stores_working_dir"] + '/' + _username + "_mongod.conf"
                    _config_file_fd = open(_config_file_fn, 'w')
                    _config_file_fd.write(_config_file_contents)
                    _config_file_fd.close()
    
                    _mongodb_pid = _proc_man.start_daemon(_cmd)
                    
                    sleep(5)

                    if not _mongodb_pid :
                        _msg = "Unable to detect a private MongoDB server daemon running. "
                        _msg += "Please try to start one (e.g., " + _cmd + ")"
                        print _msg
                        exit(8)

                else :
                    global_objects["metricstore"]["port"] = _proc_man.get_port_from_pid(_mongodb_pid[0])
                    _hostport = int(global_objects["metricstore"]["port"])

            _nh_conn = Nethashget(_hostname)

            _nh_conn.nmap(_hostport, _protocol)
            _msg = "A Metric Store of the kind \"MongoDB\" (" + _usage + ") "
            _msg += "on node " + _hostname + ", " + _protocol
            _msg += " port " + str(_hostport) + ", database id \"" + str(_databaseid)
            _msg += "\" seems to be running."
            cbdebug(_msg)
            _status = 0

        else:
            operation = "initialize"
            _mmc = MongodbMgdConn(global_objects["metricstore"])
            _mmc.initialize_metric_store(_username)
            
            _msg = "The Metric Store of the kind \"MongoDB\" was successfully initialized "
            _msg += "on node: " + str(global_objects["metricstore"])
            cbdebug(_msg)
            _status = 0
            
            _status = 0
            
        return _status, _msg

    except ProcessManagement.ProcessManagementException, obj :
        _status = str(obj.status)
        _msg = str(obj.msg)
        raise StoreSetupException(_msg, 9)