Skip to content
Snippets Groups Projects
Select Git revision
  • master default
  • y3
  • y2
  • y1
4 results

icg

  • Clone with SSH
  • Clone with HTTPS
  • user avatar
    Debora Benedetto authored
    98af4c22
    History

    ICG Controller

    This repository contains all the required code and templates to run the ICG component, it also contains a Dockerfile that builds the complete image of the ICG with a provided REST API

    Requirements

    • Docker

    Installation

    To have a functional ICG application the following steps can be used.

    • Download the full content of this repository
    • Build the docker image launching the following command: docker build -t icg:1.0.0 .
    • Run the container: docker run --name icg -d -p 5000:5000 icg:1.0.0

    Usage

    To use the now running ICG docker container we can call the available REST API.

    The API is available at http://localhost:5000/docs. You can try here the endpoint behavior:

    • POST /infrastructure/files generates iac compress folder from json intermediate representation (see input_file_example/nginx/parameters.json as an example body).
    • POST /iac/files generates iac compress folder from doml model (ex. nginx-openstack_v2.domlx)

    Otherwise, send a POST request at this endpoint with the indicated json body (see input_file_example/nginx/parameters.json as an example body) it will respond with a .tar.gz file containing all the required IaC files:

    - curl --location --request POST localhost:5000/infrastructure/files --header "Content-Type: application/json" --data "@parameters.json" --output "OutputIaC.tar.gz"

    Uninstall

    Remove the docker container and the docker image:

    docker container rm -f icg
    docker rmi icg:0.1

    Usage from command line

    Usage: python main.py [-h] [-d dir] model

    • -h prints usage
    • -d dir loads metamodel from <dir>
    • --single or --single_mmodel use the single (non-split) metamodel
    • model the model to be loaded py .\main.py -d <doml_folder> --single <metamodel_file_path>

    Example:

    py .\main.py -d icgparser/doml --single icgparser/doml/nginx-openstack_v2.domlx