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))