Exemple #1
0
    def validate(self, data):
        data_model = {
            "actuator": six.string_types,
            "check_interval": int,
            "metric_source": six.string_types,
            "schedule_strategy": six.string_types
        }

        for key in data_model:
            if (key not in data):
                raise ex.BadRequestException(
                    "Variable \"{}\" is missing".format(key))
            if (not isinstance(data[key], data_model[key])):
                raise ex.BadRequestException(
                    "\"{}\" has unexpected variable type: {}. Was expecting {}"
                    .format(key, type(data[key]), data_model[key]))
def stop_scaling(app_id):
    if app_id in scaled_apps:
        API_LOG.log("Removing application id: %s" % (app_id))

        executor = scaled_apps[app_id]
        executor.stop_application_scaling()
        scaled_apps.pop(app_id)

    else:
        raise ex.BadRequestException()
def start_scaling(app_id, data):
    if ('control_plugin' not in data or 'control_parameters' not in data):
        API_LOG.log("Missing parameters in request")
        raise ex.BadRequestException()

    plugin = data["control_plugin"]

    controller = controller_builder.get_controller(plugin, app_id, data)
    executor = Thread(target=controller.start_application_scaling)

    executor.start()
    scaled_apps[app_id] = controller
def setup_environment(data):
    if ('actuator_plugin' not in data or 'instances_cap' not in data):
        API_LOG.log("Missing parameters in request")
        raise ex.BadRequestException()

    plugin = data['actuator_plugin']
    instances_cap = data['instances_cap']

    actuator = actuator_builder.get_actuator(plugin)
    try:
        actuator.adjust_resources(instances_cap)
    except Exception as e:
        API_LOG.log(str(e))
    def validate(self, data):
        data_model = {"actuation_size": int, "max_rep": int, "min_rep": int}

        for key in data_model:
            if (key not in data):
                raise ex.BadRequestException(
                    "Variable \"{}\" is missing".format(key))
            if (not isinstance(data[key], data_model[key])):
                raise ex.BadRequestException(
                    "\"{}\" has unexpected variable type: {}. Was expecting {}"
                    .format(key, type(data[key]), data_model[key]))

        if 'trigger_up' not in data:
            raise ex.BadRequestException(
                "Variable \"{}\" is missing".format(key))

        if not (isinstance(data['trigger_up'], int)
                or isinstance(data['trigger_up'], float)):
            raise ex.BadRequestException(
                "\"trigger_up\" has unexpected variable type: {}. Was"
                " expecting float or int".format(type(data['trigger_up'])))

        if 'trigger_down' not in data:
            raise ex.BadRequestException(
                "Variable \"{}\" is missing".format(key))

        if not (isinstance(data['trigger_down'], int)
                or isinstance(data['trigger_down'], float)):
            raise ex.BadRequestException(
                "\"trigger_down\" has unexpected variable type: {}. Was"
                " expecting float or int".format(type(data['trigger_down'])))

        if (data["min_rep"] < 1):
            raise ex.BadRequestException(
                "Variable \"min_rep\" must be greater than 0")
        if (data["min_rep"] > data["max_rep"]):
            raise ex.BadRequestException("Variable \"max_rep\" must be greater\
                    or equal than \"min_rep\"")
    def validate(self, data):

        data_model = {
            "max_rep": int,
            "min_rep": int,
            "heuristic_options": dict
        }
        for key in data_model:
            if (key not in data):
                raise ex.BadRequestException(
                    "Variable \"{}\" is missing".format(key))
            if (not isinstance(data[key], data_model[key])):
                raise ex.BadRequestException(
                    "\"{}\" has unexpected variable type: {}. Was expecting {}"
                    .format(key, type(data[key]), data_model[key]))

        if (data["min_rep"] < 1):
            raise ex.BadRequestException(
                "Variable \"min_rep\" must be greater than 0")
        if (data["min_rep"] > data["max_rep"]):
            raise ex.BadRequestException("Variable \"max_rep\" must be greater\
                     or equal than \"min_rep\"")

        key = "heuristic_options"
        heuristics = \
            ["proportional_gain", "derivative_gain", "integral_gain"]
        types = [float, int]

        data = data.get(key)
        for key in heuristics:
            if (key not in data):
                raise ex.BadRequestException(
                    "Variable \"{}\" is missing".format(key))

            if (type(data[key]) not in types):
                raise ex.BadRequestException(
                    "\"{}\" has unexpected variable type: {}. Was expecting {}"
                    .format(key, type(data[key]), types))