Esempio n. 1
0
}

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'
# -----------------------
Esempio n. 2
0
    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
            )