Skip to main content

Package Structure

The package structure of the xpanse application are as follows and must be strictly followed in all implementations. xpanse uses maven as its build tool and the application is split into multiple smaller maven modules.

modules

This maven module is a parent module for most of the other maven modules within xpanse.

api

Contains all the REST API controller classes and the exception handlers.

async

Contains all classes related to asynchronous processing configuration for different use cases within xpanse.

common

Contains generic and utility classes which are used by multiple different modules.

credential

contains all logic and caching for cloud provider credentials.

database

contains all entities, DB queries and JPA related code.

deployment

contains all code related to service deployment. All service deployers such Terraform, OpenTofu, etc are also implemented in this module.

logging

contains all code and configuration related to logging.

models

contains all data models and exceptions that are exposed externally in our APIs. All data models here are automatically exported in the OpenAPI doc.

Avoid cyclic dependencies with models package

Ensure that this module doesn't have dependency to any other xpanse modules else it will result in cycle dependencies errors.

This package must not contain any internal data classes.

monitor

contains all code related to fetching and caching service metrics for deployed services.

observability

contains all code related to observability and traceability of the xpanse stack.

monitoring vs observability packages

monitor module is for monitoring the customer's deployed clouds services whereas observability module is for monitoring the xpanse stack itself.

orchestrator

This package is the central package for orchestrating service deployment, monitoring, cloud provider credentials, service state management. It also has all the internal data models used by xpanse for all use-cases.

Policy

This package contains all code related to OPA policy validation. Also, the policy-man REST client is part of this package.

security

This package contains all code and configuration related to security within xpanse. It contains the Oauth2 security of xpanse APIs and also the encryption of sensitive order data.

servicetemplate

contains all code for managing service templates.

workflow

contains all code and configuration related to managing Activiti workflow engine.

plugins

contains all cloud provider specific integrations. Under plugins maven module, there is one submodule for each cloud provider supported by xpanse.

runtime

This is the package which contains the main spring boot class and also pulls all other maven modules listed above as dependencies to generate the final jar.