/mmsri

Open Source Reference Implementation for MMS Execubots

Primary LanguageJavaApache License 2.0Apache-2.0

MMS Reference Implementation

Language grade: Java CircleCI Documentation Status

This is the reference implementation for MMS. For the source code, please head to https://github.com/Open-MBEE/mms. For more information about Open-MBEE, visit the Open-MBEE Website. For more detailed documentation, visit MMSRI ReadTheDocs.

Quick Start

Note this quick start is for getting a test instance up and is not recommended for production use. Different configs will be required for different deployment scenarios, environments and workloads (ex. elasticsearch should be a cluster instead of single node, different memory allocations, etc)

Docker

Installation instructions are found here: Docker documentation

Option 1: Get from dockerhub

Use tag 4.x from Dockerhub

Option 2: Build from repo

  1. Copy the application.properties.example file in src/main/resources/ as application.properties
  2. In the command line, run docker-compose up --build to create and start all the services from the configuration.
  3. Swagger ui at http://localhost:8080/v3/swagger-ui.html
  4. Use the command docker-compose down to stop any containers from running and to remove the containers, networks, and images created by the docker-compose up command. This command should always be done before any new attempts to restart the services from the configuration.

Note the docker compose file is running the application with the test profile, with the config from src/main/resources/application-test.properties

This implementation brings in Spring Actuator and Logbook for monitoring and logging features - see Logbook and Actuator for more info.

The application.properties.example file has the suggested configs and comments. example

Using externalized configs

There are a variety of options to override the packaged config depending on the deployment scenario. See Config locations for the list of options. Usually using profiles or environment variables are a good way to specify different configs for different environments.

Developer Setup

Docker

We suggest using Docker to set up PostgreSQL and Elasticsearch. Installation instructions are found here: Docker documentation

Java SE Development Kit 17

Installation instructions: JDK-17 download

Postgresql

Install postgres (PostgreSQL) 11, instructions for Docker: PostgreSQL with Docker

docker run -d -e POSTGRES_PASSWORD=test1234 -e POSTGRES_USER=mmsuser -e POSTGRES_DB=mms -p 5432:5432 postgres:11-alpine

or Mysql

5.7 Mysql Docker

docker run -d -e MYSQL_ROOT_PASSWORD=test1234 -e MYSQL_DATABASE=mms -p 3306:3306 mysql:5.7

Elasticsearch

Install Elasticsearch 7.8. If you use Docker instructions are available here: Setting up Elasticsearch with Docker

docker run -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.8.1

Artifact Storage

Use MinIO for an open sourced local s3 api compatible storage

docker run -p 9000:9000 -e "MINIO_ACCESS_KEY=admintest" -e "MINIO_SECRET_KEY=admintest" minio/minio server /data

The Application:

  1. Copy the application.properties.example file in src/main/resources/ as application.properties
  2. Change values for all the appropriate properties. The example file holds sane values for most properties.
  3. Setup Run and Debug configurations. The command line run command is ./gradlew bootRun
  4. Swagger ui at http://localhost:8080/v3/swagger-ui.html

Swagger codegen

Gradle Plugin

./gradlew generateSwaggerCode

Results in build/swagger-code-*

Built With

Contributing

To learn how you can get involved in a variety of ways, please see Contributing to OpenMBEE.

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details