Skip to main content

Automated cloud deployment

Project description

Automated cloud deployment

The 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.

Setup

Install poetry:

pip3 install poetry

Install needed libraries:

poetry install

on Windows, you mya need to run this due to alias problem:

python3 -m poetry install

Furthermore, you need the Minzinc and CPLEX applications installed as their binaries are required to use the following solvers:

  • Chuffed
  • Google OR-Tools
  • Gecode
  • CPLEX

To 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:

poetry shell

Creating your own use-case

Although the tool comes with some model use-cases, you can also add your own by following these steps:

  1. Decide the format of the model (MiniZinc / JSON / Both)
  2. Create the model of the application (see guide below)
  3. (Optional) For MiniZinc models, create a surrogate model so the script can compute the maximum number of VMs to be used.
  4. Run the script add_useCase.py which will configure the application for your newly created model
  5. (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 tool

There are two simple steps in running the tool:

  1. Select the configuration you would like to run with (see the configuration options below)
  • NOTE Make sure to disable the solvers that aren't compatible with the format of your sources.
  1. Run the script runTests.py

Configuration

The configuration of the tool can be found inside the config folder, and is split into several JSON files.

Config.json

This file stores general configuration: from paths to general options for running your tests.

  • Source-Config Stores the configuration regarding models

    • Type : The type of solver the models work with
    • Path : The path where the models are found
    • Extension : The format of the models
    • Formalization : The way the general constraints are represented.
  • Input-Config Stores data regarding the input fed to solvers when runnign the tests

    • Type : The type of solver which accepts the input files
    • Path : The path of the input files
    • Extension : The format of the input files
    • Offer Numbers : The amount of virtual machine offers found in an input file.
  • Test-Config Stores data regarding the way the tests are carried out

    • Repetitions : How many times a specific use case is tested
    • Symmetry Breaking : Denotes whether static symmetry breaking techniques should be employed when running the tests
    • Symmetry Breakers : Denote all methods of static symmetry breaking which should be tested
    • Output path : Denotes where the test results should be placed. The format is Output-Path/SymmetryBreaker/Solver/UseCase_Offers.csv
    • Solver Config File : Points to where solver-related settings are stored
    • Use Case Config File : Points where use-case specific settings are stored

Solvers.json

This file stores solver related configuration.

  • MiniZinc-Solvers Stores information regarding the different SAT solvers used for testing

    • Name : The name of the solver
    • Keywd : A unique identifier of the solver
    • Enabled : Denotes whether tests should be run with this solver
  • JSON-Solvers Stores information regarding the different SMT solvers used for testing

    • Name : The name of the solver
    • Keywd : A unique identifier of the solver
    • Enabled : Denotes whether tests should be run with this solver

SymmetryBreaking.json

This 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 technique
    • Constraint : The constraint added to the model. A parameter between brackets will be replaced at runtime with an actual value.

UseCases.json

This file stores information about each use case.

  • Use-Cases Stores the configuration of each use-case
    • Name : The name of the use-case
    • Enabled : 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 scaled
      • Name : The name of the component
      • Lower Bound : The least amount of instances to be deployed
      • Upper Bound : The maximum amount instances to be deployed
    • Surrogate-Problem : Denotes whether the model has an associated surrogate problem which must be run first
    • Surrogate-Model-Name : The name of the model for the surrogate problem

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sage-rec-engine-0.1.tar.gz (49.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sage_rec_engine-0.1-py3-none-any.whl (61.3 kB view details)

Uploaded Python 3

File details

Details for the file sage-rec-engine-0.1.tar.gz.

File metadata

  • Download URL: sage-rec-engine-0.1.tar.gz
  • Upload date:
  • Size: 49.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.8

File hashes

Hashes for sage-rec-engine-0.1.tar.gz
Algorithm Hash digest
SHA256 326f07067b040e53abe19872bd2c890205c75aba6fd148535254158984898a1e
MD5 b817510154e9f1288e3f9a92c50ce2cb
BLAKE2b-256 be78b717a370f4e7ffa66256b9d25c9f828d7cc02df26e60f2c7239df36e381b

See more details on using hashes here.

File details

Details for the file sage_rec_engine-0.1-py3-none-any.whl.

File metadata

  • Download URL: sage_rec_engine-0.1-py3-none-any.whl
  • Upload date:
  • Size: 61.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.8

File hashes

Hashes for sage_rec_engine-0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c77c21e3be2b0835315c0df526eff189a048827a3bc9a058ef84e63f8cbc8d16
MD5 831664938fa99f2bad476865920d16a8
BLAKE2b-256 6c79d1597fd2637f7cc0e594c8483e25835e417c7d2cba5b22efd351f0be2fe5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page