The cloudopting core manager
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Dockerfile
bpmn-component
cloud-component
common-component
database-component
docker-component
documentation
monitoring-component
mvnrepo
rest-component
storage-component
tosca-component
wordpress-component
.bowerrc
.gitignore
LICENSE
README.md
bower.json
build-run.sh
build-war.sh
dev-compose.yml
pom.xml
prod-compose.yml

README.md

cloudopting-manager

This is the master repository for the CloudOpting platform orchestrator

This is a Spring Boot application subdivided into different modules

The following tables explains the modules and the subdivision

component codename scope interface documentation
bpmn-component This component contains the BPMN engine, the processes and the related classes of the Activiti BPMN engine
cloud-component This component contains the classes that interact with the cloud environment and use the JClouds library
database-component This component contains the classes to save entities on the database, that will be PostgreSQL
docker-component This component contains the classes to talk REST to the python component that interact with docker (NOTE: the docker python component will be in a separate repository from this one)
rest-component This component contains the Spring Boot REST entrypoint for all the platform features
storage-component This component contains the jackrabbit classes to help manage the storage of files
tosca-component This component contains the TOSCA parser thsat manages all the interactions with the TOSCA world
wordpress-component This component contains the code necessary to interact through API with wordpress for the public view of the catalogue

Development environment configuration

The following description helps setting up a CentOS 7 development environment.

Java 1.8 is needed (OpenJDK can work for the moment, no quirks have discovered to require SUN java)

yum install java-1.8.0-openjdk-devel

In this way you get JDK and not only JRE.

Setup of Eclipse environment

Is adviced to start from Sprint Tool Suite environment, but if preferred also a simple eclipse environment can do the job (you have to install the STS plugin yourselves: Here is a list of useful plugin is adviced to have installed in the Eclipse environment:

  • STS
  • Activiti plugin

With Eclipse you will than import the GitHub repository:

  • Open the GIT perspective
  • Clone the repo from CloudOpting account
  • you will find the cloned repo in the home/git folder (typically)

Now is time to import the project using maven import

  • point to the main pom.xml in the cloudopting-manager and import the project from it
  • all the modules will get imported

Prepare the run configuration as in the image below, this this configuration you will build the whole project to be able to check the working of the modifiers done Setting the run configuration

Fast deploy with docker-compose

Requires docker and docker-compose.

Build the war file (in the Dockerfile folder): ./build-war.sh

To deploy the development environment: docker-compose -f prod-compose.yml up

To deploy the production environment: docker-compose -f dev-compose.yml up

Processes

Service Publishing Process

The workflow that a Service Provider has to follow to publish a Service in the platform is represented in BPMN notation in the following picture Service Publishing Process

Deployment Process

The workflow below explains the deployment process the is run by the Activiti engine

Service Publishing Process

Architecture

The overall architecture of the system is defined in the diagram below Architectural diagram

As can be seen there is a core component represente by the CloudOpting manager that is the element implemented in this repository.

Technologies used

This application is coded in java.

The framework used is Spring and in particular Sprint-boot since it is a headless application.

It has a BPMN engine embedded, and the project opted for Activiti

Other libraries used are:

Activity

Throughput Graph