Giter VIP home page Giter VIP logo

tackle-container-advisor's Introduction

Tackle Container Advisor (TCA)

Purpose

TCA takes client applications as a natural language description and recommends whether client applications can be containerized. For example, a client can provide the application description as the following.

1. App1: rhel, db2, java, tomcat

TCA takes the following steps to recommend the containerization.

  1. Assessment: It assesses the application to standardize the inputs to relevant named entities present in our knowledge base. For details on the knowledge base please check the aca_db folder. For example, the inputs in App1 get mapped as the following named entities.
1. App1: rhel: Linux|RedHat Linux, db2: DB2, java: Java, tomcat: Apache Tomcat
  1. Containerization: First, it recommends whether App1 can be containerized, partially containerized, or kept as it is. Then if App1 is recommended as containerized or partially containerized, TCA generates container images based on DockerHub or Openshift. For example, if a user decides to generate DockerHub related images, then TCA generates the following images.
1. tomcat|https://hub.docker.com/_/tomcat
2. db2|https://hub.docker.com/r/ibmcom/db2

For Openshift, TCA generates the following images.

1. tomcat|https://access.redhat.com/containers/#/registry.access.redhat.com/jboss-webserver-3/webserver31-tomcat8-openshift
2. db2|https://access.redhat.com/containers/#/cp.stg.icr.io/cp/ftm/base/ftm-db2-base

TCA Pipeline

Screen Shot 2021-07-29 at 4 10 10 PM

The pipeline ingests raw inputs from clients data and standardizes the data to generate named entities and versions. For standardizing or normalizing raw inputs we use a tf-idf similarity based approach. To find container images we represent images in terms of named entities as well. The normalized representation helps to match legacy applications with container images to suggest the best possible recommendations.

Running TCA's Backend API

There are two options to run the backend API. One using a shell script.

1. sh run.sh

Two, you can directly run the docker as follows.

1. cd aca_backend_api/
2. docker-compose  -f 'docker-compose-api.yml' --env-file ./config.ini up -d --build

Updating TCA's Knowledge Base

If you want to make changes to TCA's Knowledge Base, please follow the instructions below.

Install sqlite3
1. https://www.sqlite.org/download.html
Installing Anaconda3
 1. https://docs.anaconda.com/anaconda/install/
Create a Conda virtual environmment with python3.8
1. conda create --name <env-name> python=3.8
2. conda activate <env-name>
Clone the TCA Repository from git as follows and enter into the parent folder
1. git clone https://github.com/konveyor/tackle-container-advisor.git
2. cd tackle-container-advisor
Setup TCA's environment by running the following
1. sh setup.sh
Update TCA's Knowledge Base

For updating the TCA's Knowledge Base, enter in the aca_db folder. Upload the DB file in a tool such DBeaver. Once you have completed making changes, generate a new .sql file and update the existing .sql file with the new file.

Clean up TCA's environment by running the following and then rerun the setup.
1. sh clean.sh
2. sh setup.sh

Running TCA with a new Knowledge Base

Please perform the following steps.

Replace the existing .sql file with the new <new_db>.sql file in the aca_db folder
Change the config.ini file in the aca_entity_standardizer folder as follows
1. db_path = aca_db/<new_db>.db
Change the config.ini in the aca_kg_utils folder as follows
1. db_path = aca_db/<new_db>.db
Modify the setup.sh script to reflect the sql and db file accordingly.
1. aca_sql_file="<new_db>.sql"
2. aca_db_file="<new_db>.db"
Run the TCA's environment setup by running the following script
1. sh setup.sh
Modify the clean.sh script to reflect the sql and db file accordingly
1. aca_db_file="aca_kg_ce_1.0.1.db"

Creating a New Version of the Knowledge Base

Please perform the following changes when you create a new version

Update all the tests and README file with the new version information in aca_backend_api
Change the config.ini in the aca_kg_utils and aca_entity_standardizer to reflect the new version
Change the README file in aca_db with new version information
Change all the scripts (clean.sh and setup.sh) to reflect the latest version of the knowledge base

References

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.