} model_output_file = open('model_specific_output.pickle', 'w') pickle.dump(model_output, model_output_file) model_output_file.close() # Append Results to Database cwd = getcwd() FSDIR = cwd.split('/')[-2] FSID = int(FSDIR.strip('fp_')) model_type = 'rf_v13' architecture = None activation_function = None learning_rate = None regularization = None dbpath = '../../data.db' ID, status = insert_experiment(featuresubsetid=FSID, dbpath=dbpath, model_type=model_type, RMSE_test=RMSE_test, RMSE_train=RMSE_train, architecture=architecture, activation_function=activation_function, learning_rate=learning_rate, regularization=regularization) if status != 'inserted': print 'Error inserting experiment records into database' # -----------------------
def _handle_request(self, path, parameters): # tools.log("_handle_request: %s" % (path), debug=True) if path == "/get_error_log_count": exp_id = 0 if parameters.has_key("experiment_id"): exp_id = long(parameters["experiment_id"][0]) result = database.execute_get_procedure_dictionary("get_error_log_count", args=(exp_id,)) if len(result) == 1: return result[0]['bad_volume_count'] return None if path == "/get_prediction": classifier = classification.Classification.get_current_or_initialize( training_dataset_size=communication.Communication.get_current_experiment()["config"][ "training_dataset_size"], violation_iops_classes={"v1": 0, "v2": 1, "v3": 2, "v4": 3}, # put the index of class in the array training_experiment_id=communication.Communication.get_current_experiment()["config"][ "training_experiment_id"], read_is_priority=communication.Communication.get_current_experiment()["config"]["read_is_priority"] ) prediction = classifier.predict( volume_request_id=long(parameters["volume_request_id"][0]) ) return prediction if path == "/get_current_experiment": result = database.execute_get_procedure_dictionary("get_current_experiment") if len(result) == 1: return result[0] return None if path == "/get_training_dataset": training_dataset = database.execute_get_procedure_tuple( "get_training_dataset", # WRONG PARAMETERS args=( long(parameters["experiment_id"][0]), # included this parameter in the stored procedure # long(parameters["training_dataset_size"][0]) )) return training_dataset if path == "/get_backends_weights": weights = database.execute_get_procedure_dictionary( "get_backends_weights", args=( long(parameters["experiment_id"][0]), long(parameters["volume_request_id"][0]) ) ) return weights if path == "/delete_volume": return database.delete_volume( id=long(parameters["id"].value), cinder_id=parameters["cinder_id"].value, is_deleted=long(parameters["is_deleted"].value), delete_clock=long(parameters["delete_clock"].value), delete_time=parameters["delete_time"].value ) if path == "/insert_schedule_response": return database.insert_schedule_response( experiment_id=long(parameters["experiment_id"].value), volume_request_id=long(parameters["volume_request_id"].value), response_id=long(parameters["response_id"].value), create_clock=long(parameters["create_clock"].value), create_time=parameters["create_time"].value ) if path == "/insert_backend": description = '' if parameters.has_key("description"): description = parameters["description"].value ML_model_Path = '' if parameters.has_key("ml_model_Path"): ML_model_Path = parameters["ml_model_Path"].value return database.insert_backend( cinder_id=parameters["cinder_id"].value, experiment_id=long(parameters["experiment_id"].value), capacity=int(parameters["capacity"].value), is_online=bool(parameters["is_online"].value), description=description, ml_model_Path=ML_model_Path, create_clock=long(parameters["create_clock"].value), create_time=parameters["create_time"].value ) if path == "/insert_volume": return database.insert_volume( experiment_id=long(parameters["experiment_id"].value), cinder_id=parameters["cinder_id"].value, backend_cinder_id=parameters["backend_cinder_id"].value, host_address=parameters["host_address"].value, schedule_response_id=long(parameters["schedule_response_id"].value), capacity=long(parameters["capacity"].value), create_clock=long(parameters["create_clock"].value), create_time=parameters["create_time"].value ) if path == "/insert_volume_request": return database.insert_volume_request( workload_id=long(parameters["workload_id"].value), experiment_id=long(parameters["experiment_id"].value), capacity=long(parameters["capacity"].value), type=long(parameters["type"].value), read_iops=long(parameters["read_iops"].value), write_iops=long(parameters["write_iops"].value), create_clock=long(parameters["create_clock"].value), create_time=parameters["create_time"].value ) if path == "/insert_volume_performance_meter": io_test_output = None if parameters.has_key("io_test_output"): io_test_output = parameters["io_test_output"].value nova_id = None if parameters.has_key("nova_id"): nova_id = parameters["nova_id"].value return database.insert_volume_performance_meter( experiment_id=long(parameters["experiment_id"].value), tenant_id=long(parameters["tenant_id"].value), nova_id=nova_id, backend_id=long(parameters["backend_id"].value), volume_id=long(parameters["volume_id"].value), cinder_volume_id=parameters["cinder_volume_id"].value, read_iops=long(parameters["read_iops"].value), write_iops=long(parameters["write_iops"].value), duration=float(parameters["duration"].value), sla_violation_id=long(parameters["sla_violation_id"].value), io_test_output=io_test_output, terminate_wait=float(parameters["terminate_wait"].value), create_clock=long(parameters["create_clock"].value), create_time=parameters["create_time"].value ) if path == "/insert_log": type = '' if parameters.has_key("type"): type = parameters["type"].value code = '' if parameters.has_key("code"): code = parameters["code"].value file_name = '' if parameters.has_key("file_name"): file_name = parameters["file_name"].value function_name = '' if parameters.has_key("function_name"): function_name = parameters["function_name"].value message = '' if parameters.has_key("message"): message = parameters["message"].value exception_message = '' if parameters.has_key("exception_message"): exception_message = parameters["exception_message"].value volume_cinder_id = '' if parameters.has_key("volume_cinder_id"): volume_cinder_id = parameters["volume_cinder_id"].value tools.log( experiment_id=long(parameters["experiment_id"].value), volume_cinder_id=volume_cinder_id, app=parameters["app"].value, type=type, code=code, file_name=file_name, function_name=function_name, message=message, exception=exception_message ) if path == "/insert_experiment": comment = "" if parameters.has_key("comment"): comment = parameters["comment"].value scheduler_algorithm = "" if parameters.has_key("scheduler_algorithm"): scheduler_algorithm = parameters["scheduler_algorithm"].value config = "" if parameters.has_key("config"): config = parameters["config"].value workload_comment = "" if parameters.has_key("workload_comment"): workload_comment = parameters["workload_comment"].value new_experiment = database.insert_experiment( workload_id=long(parameters["workload_id"].value), comment=comment, scheduler_algorithm=scheduler_algorithm, config=config, workload_comment=workload_comment, workload_generate_method=int(parameters["workload_generate_method"].value), create_time=parameters["create_time"].value ) # update current experiment id if new experiment added communication.Communication.reload() return new_experiment if path == "/insert_workload_generator": command = None if parameters.has_key("command"): command = parameters["command"].value output = None if parameters.has_key("output"): output = parameters["output"].value nova_id = None if parameters.has_key("nova_id"): nova_id = parameters["nova_id"].value return database.insert_workload_generator( experiment_id=long(parameters["experiment_id"].value), cinder_id=parameters["cinder_id"].value, tenant_id=long(parameters["tenant_id"].value), nova_id=nova_id, duration=float(parameters["duration"].value), read_iops=long(parameters["read_iops"].value), write_iops=long(parameters["write_iops"].value), command=command, output=output, create_clock=long(parameters["create_clock"].value), create_time=parameters["create_time"].value ) if path == "/insert_tenant": return database.insert_tenant( experiment_id=long(parameters["experiment_id"].value), description=parameters["description"].value, nova_id=parameters["nova_id"].value, create_time=parameters["create_time"].value )