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)
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 redis_objectstore_setup(global_objects, operation, cloud_name=None): ''' TBD ''' _protocol = global_objects["objectstore"]["protocol"] _hostname = global_objects["objectstore"]["host"] _databaseid = int(global_objects["objectstore"]["dbid"]) _timeout = float(global_objects["objectstore"]["timout"]) _username = global_objects["objectstore"]["username"] _usage = global_objects["objectstore"]["usage"].lower() try: _instance_dir = global_objects["space"]["instance_dir"] if operation == "check": _stores_path = global_objects["space"]["stores_working_dir"] if not path.exists(_stores_path): cbdebug("Making stores working directory: " + _stores_path) mkdir(_stores_path) if _usage == "shared": _hostport = int(global_objects["objectstore"]["port"]) _proc_man = ProcessManagement(username="******") if not pre_check_port(_hostname, _hostport, _protocol): _redis_pid = _proc_man.get_pid_from_cmdline("redis-server") _cmd = "/usr/local/bin/redis-server /etc/redis.conf" if not _redis_pid: _msg = "Unable to detect a shared Redis server daemon running. " _msg += "Please try to start one (e.g., " + _cmd + ")" print _msg exit(8) else: _usage = "private" _config_file_fn = _stores_path + '/' + _username + "_redis.conf" _cmd = "redis-server " + _config_file_fn _proc_man = ProcessManagement(username=_username) _redis_pid = _proc_man.get_pid_from_cmdline("redis-server") if not _redis_pid: global_objects["objectstore"][ "port"] = _proc_man.get_free_port( global_objects["objectstore"]["port"], protocol="tcp") _hostport = int(global_objects["objectstore"]["port"]) _config_file_contents = global_objects["objectstore"][ "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( ';', '\n') _config_file_fd = open(_config_file_fn, 'w') _config_file_fd.write(_config_file_contents) _config_file_fd.close() _redis_pid = _proc_man.start_daemon(_cmd) if not _redis_pid: _msg = "Unable to detect a private Redis server daemon running. " _msg += "Please try to start one (e.g., " + _cmd + ")" print _msg exit(8) else: global_objects["objectstore"][ "port"] = _proc_man.get_port_from_pid(_redis_pid[0]) _hostport = int(global_objects["objectstore"]["port"]) _nh_conn = Nethashget(_hostname) _nh_conn.nmap(_hostport, _protocol) _msg = "An Object Store of the kind \"Redis\" (" + _usage + ") " _msg += "on node " + _hostname + ", " + _protocol _msg += " port " + str(_hostport) + ", database id \"" _msg += str(_databaseid) + "\" seems to be running." _status = 0 else: if not cloud_name: raise StoreSetupException( "Name of cloud is required for the 'initialize' mode", 22) operation = "initialize" _hostport = int(global_objects["objectstore"]["port"]) _collection_names = [ "reported_management_vm_metric_names", \ "reported_runtime_os_host_metric_names", \ "reported_runtime_os_vm_metric_names", \ "host_management_metrics_header", \ "vm_management_metrics_header", \ "host_runtime_os_metrics_header", \ "vm_runtime_os_metrics_header", \ "vm_runtime_app_metrics_header", \ "trace_header" ] for _collection_name in _collection_names: for _component in global_objects["mon_defaults"][ _collection_name].split(','): if _component.lower() in global_objects["mon_defaults"]: global_objects["mon_defaults"][_collection_name] = \ global_objects["mon_defaults"][_collection_name].replace(_component, \ global_objects["mon_defaults"][_component.lower()] + ',') global_objects["mon_defaults"][_collection_name] = \ global_objects["mon_defaults"][_collection_name][:-1].replace(",,",',') _rmc = RedisMgdConn(global_objects["objectstore"]) # First we remove the leftovers from previous experiments. if _rmc.initialize_object_store(cloud_name, global_objects, True): if not path.exists(_instance_dir): mkdir(_instance_dir) for _file_name in listdir(_instance_dir): _file_name = path.join(_instance_dir, _file_name) if path.isdir(_file_name): rmtree(_file_name) _msg = "Folders (but not data) underneath experiment " _msg += "directory " + _instance_dir + " were removed." cbdebug(_msg) _msg = "The Redis datastore was successfully initialized on server " + _hostname _msg += ", port " + str(_hostport) + ", database id \"" + str( _databaseid) _msg += "\"." cbdebug(_msg) _status = 0 else: _msg = "The Object Store of the kind \"Redis\" was successfully initialized " _msg += "on node " + _hostname + ". To change its " _msg += "attributes/state, use the *alter commands" _msg += "(e.g., cldalter, vmcalter, vmalter) or explicity detach " _msg += "and attach this cloud back to this experiment." cbdebug(_msg) _status = 0 return _status, _msg except NetworkException, obj: _msg = "An Object Store of the kind \"Redis\" on node " _msg += _hostname + ", " + _protocol + " port " + str(_hostport) _msg += ", database id \"" + str(_databaseid) _msg += "\" seems to be down: " + str(obj.msg) + '.' cberr(_msg) raise StoreSetupException(_msg, 8)
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 redis_objectstore_setup(global_objects, operation, cloud_name = None) : ''' TBD ''' _protocol = global_objects["objectstore"]["protocol"] _hostname = global_objects["objectstore"]["host"] _databaseid = int(global_objects["objectstore"]["dbid"]) _timeout = float(global_objects["objectstore"]["timout"]) _username = global_objects["objectstore"]["username"] _usage = global_objects["objectstore"]["usage"].lower() try : _instance_dir = global_objects["space"]["instance_dir"] if operation == "check" : _stores_path = global_objects["space"]["stores_working_dir"] if not path.exists(_stores_path) : cbdebug("Making stores working directory: " + _stores_path) mkdir(_stores_path) if _usage == "shared" : _hostport = int(global_objects["objectstore"]["port"]) _proc_man = ProcessManagement(username = "******") if not pre_check_port(_hostname, _hostport, _protocol) : _redis_pid = _proc_man.get_pid_from_cmdline("redis-server") _cmd = "/usr/local/bin/redis-server /etc/redis.conf" if not _redis_pid : _msg = "Unable to detect a shared Redis server daemon running. " _msg += "Please try to start one (e.g., " + _cmd + ")" print _msg exit(8) else : _usage = "private" _config_file_fn = _stores_path + '/' + _username + "_redis.conf" _cmd = "redis-server " + _config_file_fn _proc_man = ProcessManagement(username = _username) _redis_pid = _proc_man.get_pid_from_cmdline("redis-server") if not _redis_pid : global_objects["objectstore"]["port"] = _proc_man.get_free_port(global_objects["objectstore"]["port"], protocol = "tcp") _hostport = int(global_objects["objectstore"]["port"]) _config_file_contents = global_objects["objectstore"]["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(';','\n') _config_file_fd = open(_config_file_fn, 'w') _config_file_fd.write(_config_file_contents) _config_file_fd.close() _redis_pid = _proc_man.start_daemon(_cmd) if not _redis_pid : _msg = "Unable to detect a private Redis server daemon running. " _msg += "Please try to start one (e.g., " + _cmd + ")" print _msg exit(8) else : global_objects["objectstore"]["port"] = _proc_man.get_port_from_pid(_redis_pid[0]) _hostport = int(global_objects["objectstore"]["port"]) _nh_conn = Nethashget(_hostname) _nh_conn.nmap(_hostport, _protocol) _msg = "An Object Store of the kind \"Redis\" (" + _usage + ") " _msg += "on node " + _hostname + ", " + _protocol _msg += " port " + str(_hostport) + ", database id \"" _msg += str(_databaseid) + "\" seems to be running." _status = 0 else : if not cloud_name : raise StoreSetupException("Name of cloud is required for the 'initialize' mode", 22) operation = "initialize" _hostport = int(global_objects["objectstore"]["port"]) _collection_names = [ "reported_management_vm_metric_names", \ "reported_runtime_os_host_metric_names", \ "reported_runtime_os_vm_metric_names", \ "host_management_metrics_header", \ "vm_management_metrics_header", \ "host_runtime_os_metrics_header", \ "vm_runtime_os_metrics_header", \ "vm_runtime_app_metrics_header", \ "trace_header" ] for _collection_name in _collection_names : for _component in global_objects["mon_defaults"][_collection_name].split(',') : if _component.lower() in global_objects["mon_defaults"] : global_objects["mon_defaults"][_collection_name] = \ global_objects["mon_defaults"][_collection_name].replace(_component, \ global_objects["mon_defaults"][_component.lower()] + ',') global_objects["mon_defaults"][_collection_name] = \ global_objects["mon_defaults"][_collection_name][:-1].replace(",,",',') _rmc = RedisMgdConn(global_objects["objectstore"]) # First we remove the leftovers from previous experiments. if _rmc.initialize_object_store(cloud_name, global_objects, True) : if not path.exists(_instance_dir) : mkdir(_instance_dir) for _file_name in listdir(_instance_dir) : _file_name = path.join(_instance_dir, _file_name) if path.isdir(_file_name) : rmtree(_file_name) _msg = "Folders (but not data) underneath experiment " _msg += "directory " + _instance_dir + " were removed." cbdebug(_msg) _msg = "The Redis datastore was successfully initialized on server " + _hostname _msg += ", port " + str(_hostport) + ", database id \"" + str(_databaseid) _msg += "\"." cbdebug(_msg) _status = 0 else : _msg = "The Object Store of the kind \"Redis\" was successfully initialized " _msg += "on node " + _hostname + ". To change its " _msg += "attributes/state, use the *alter commands" _msg += "(e.g., cldalter, vmcalter, vmalter) or explicity detach " _msg += "and attach this cloud back to this experiment." cbdebug(_msg) _status = 0 return _status, _msg except NetworkException, obj : _msg = "An Object Store of the kind \"Redis\" on node " _msg += _hostname + ", " + _protocol + " port " + str(_hostport) _msg += ", database id \"" + str(_databaseid) _msg += "\" seems to be down: " + str(obj.msg) + '.' cberr(_msg) raise StoreSetupException(_msg, 8)