Package: sage-rec-engine
Automated cloud deploymentThe tool is used to determine a deployment plan for a series of application using a given amount of Virtual Machine (VM) offers
at its disposal. It was designed to be highly configurable and easy to use.SetupInstall poetry:pip3installpoetryInstall needed libraries:poetryinstallon Windows, you mya need to run this due to alias problem:python3-mpoetryinstallFurthermore, you need the Minzinc and CPLEX applications installed as their binaries are required to use the following solvers:ChuffedGoogle OR-ToolsGecodeCPLEXTo install them, please use the following links:Minizinc [https://www.minizinc.org/]CPLEX [https://www.ibm.com/support/pages/downloading-ibm-ilog-cplex-optimization-studio-v1290]Google OR-Tools [https://developers.google.com/optimization/install/download]Enter the shell:poetryshellCreating your own use-caseAlthough the tool comes with some model use-cases, you can also add your own by following these steps:Decide the format of the model (MiniZinc / JSON / Both)Create the model of the application (see guide below)(Optional) For MiniZinc models, create a surrogate model so the script can compute the maximum number of VMs to be used.Run the scriptadd_useCase.pywhich will configure the application for your newly created model(Optional) provide a list of Virtual Machine offers, following the same format as those provided as model
Note that the offer list must be in the same format as that of the model.Running the toolThere are two simple steps in running the tool:Select the configuration you would like to run with (see the configuration options below)NOTEMake sure to disable the solvers that aren't compatible with the format of your sources.Run the scriptrunTests.pyConfigurationThe configuration of the tool can be found inside theconfigfolder, and is split into several JSON files.Config.jsonThis file stores general configuration: from paths to general options for running your tests.Source-Config
Stores the configuration regarding modelsType: The type of solver the models work withPath: The path where the models are foundExtension: The format of the modelsFormalization: The way the general constraints are represented.Input-Config
Stores data regarding the input fed to solvers when runnign the testsType: The type of solver which accepts the input filesPath: The path of the input filesExtension: The format of the input filesOffer Numbers: The amount of virtual machine offers found in an input file.Test-Config
Stores data regarding the way the tests are carried outRepetitions: How many times a specific use case is testedSymmetry Breaking: Denotes whether static symmetry breaking techniques should be employed when running the testsSymmetry Breakers: Denote all methods of static symmetry breaking which should be testedOutput path: Denotes where the test results should be placed. The format isOutput-Path/SymmetryBreaker/Solver/UseCase_Offers.csvSolver Config File: Points to where solver-related settings are storedUse Case Config File: Points where use-case specific settings are storedSolvers.jsonThis file stores solver related configuration.MiniZinc-Solvers
Stores information regarding the different SAT solvers used for testingName: The name of the solverKeywd: A unique identifier of the solverEnabled: Denotes whether tests should be run with this solverJSON-Solvers
Stores information regarding the different SMT solvers used for testingName: The name of the solverKeywd: A unique identifier of the solverEnabled: Denotes whether tests should be run with this solverSymmetryBreaking.jsonThis file stores information required for the usage of symmetry breaking methods with SAT Models.SB-Constraints
Stores information about what constraints should be added for different symmetry breakers.Tag: A unique identifier of the symmetry breaking techniqueConstraint: The constraint added to the model. A parameter between brackets will be replaced at runtime with an actual value.UseCases.jsonThis file stores information about each use case.Use-Cases
Stores the configuration of each use-caseName: The name of the use-caseEnabled: Denotes whether the use case should be tested.Model-Name: The name of the model used when testing the use case.Scaling-Components: Denotes whether the model has components which can be scaled regardless of other restrictions.Components
If the model supports scaling components, then here is stored a list of all components which can be scaledName: The name of the componentLower Bound: The least amount of instances to be deployedUpper Bound: The maximum amount instances to be deployedSurrogate-Problem: Denotes whether the model has an associated surrogate problem which must be run firstSurrogate-Model-Name: The name of the model for the surrogate problem