https://github.com/eclipse-xpanse/xpanse
xpanse is here to make native managed cloud services configurable and portable.
https://github.com/eclipse-xpanse/xpanse
cloud containers openapi rest-api saas spring-boot
Last synced: 2 months ago
JSON representation
xpanse is here to make native managed cloud services configurable and portable.
- Host: GitHub
- URL: https://github.com/eclipse-xpanse/xpanse
- Owner: eclipse-xpanse
- License: apache-2.0
- Created: 2022-10-10T07:43:58.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-10-29T08:36:50.000Z (over 1 year ago)
- Last Synced: 2024-10-29T09:53:33.702Z (over 1 year ago)
- Topics: cloud, containers, openapi, rest-api, saas, spring-boot
- Language: Java
- Homepage: https://eclipse.dev/xpanse/
- Size: 31.3 MB
- Stars: 23
- Watchers: 9
- Forks: 20
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
- awesome-java - Eclipse Xpanse
README

Xpanse is an Open Source project allowing to easily implement native-managed service on any cloud service provider. This
project is part of the Open Services Cloud (OSC) charter.
Xpanse unleashes your cloud services by removing vendor lock-in and lock out. It standardizes and exposes cloud service
providers core services, meaning that your xpanse service is portable (multi-cloud) on any cloud topology and provider.
It also avoids tight coupling of your service to other cloud service provider services.
## Developer Setup and contribution guide
All details on how to set up and run the project can be found on our documentation website
1. [Developer setup](https://eclipse.dev/xpanse/docs/developer-setup)
2. [Pull Requests](https://eclipse.dev/xpanse/docs/Contribute/pull-requests)
## Maven Configuration
To use packages that are not published in maven central,
you need to add the contents [from](.github/workflows/.m2/settings.xml) to your local `~/.m2/settings.xml` file.
This configuration cannot be added to the project pom.xml directly
since we publish our project to maven central, and it is not allowed to have dependencies to libraries that are not published in maven central.
> ⚠️ **Warning:** Without this configuration, the build will fail.
## Configuration Language
Details can be found on the project
website [here](https://eclipse.dev/xpanse/docs/configuration-language).
## Formatter and Linter
The project follows [google-code-format](https://github.com/google/google-java-format).
We use the [spotless plugin](https://github.com/diffplug/spotless/tree/main/plugin-maven#google-java-format) to format code and to validate code format.
We can automatically format the code using the command below.
```shell
mvn spotless:apply
```
To validate errors we can run the command below.
```shell
mvn spotless:check && mvn checkstyle:check
```
## Runtime
Details can be found on the project website [here](https://eclipse.dev/xpanse/docs/runtime).
## Database
Details can be found on the project website [here](https://eclipse.dev/xpanse/docs/database).
## Cache
Details can be found on the project website [here](https://eclipse.dev/xpanse/docs/caching).
## Generate terra-boot client code
1. Run the terra-boot project with spring-profile `oauth` and `dev` with methods mentioned here.
This is necessary even if the terra-boot will be actually used without oauth enabled in production.
This will make the client to handle both with and without authentication usecases automatically.
2. Access http://localhost:9090/v3/api-docs to get the openapi json.
3. Copy all the JSON content of the openapi json and replace all the content in the JSON file
[terra-boot-openapi.json](modules/deployment/src/main/resources/terra-boot-openapi.json).
4. Run the below maven command to generate the REST API client and data models for terra-boot. The command must be
executed directly inside the `deployment` module.
```ssh
mvn clean generate-sources -DskipTerraBootClientGeneration=false
```
## Generate tofu-maker client code
1. Run the tofu-maker project with spring-profile `oauth` and `dev` with methods mentioned here.
This is necessary even if the tofu-maker will be actually used without oauth enabled in production.
This will make the client to handle both with and without authentication usecases automatically.
2. Access http://localhost:9092/v3/api-docs to get the openapi json.
3. Copy all the JSON content of the openapi json and replace all the content in the JSON file
[tofu-maker-openapi.json](modules/deployment/src/main/resources/tofu-maker-openapi.json).
4. Run the below maven command to generate the REST API client and data models for tofu-maker. The
command must be executed directly inside the `deployment` module.
```ssh
mvn clean generate-sources -DskipTofuMakerClientGeneration=false
```
## Generate policy-man client code
1. Run the policy-man project and access http://localhost:8090/swagger/doc.json to get the openapi json.
2. Copy all the JSON content of the openapi json and replace all the content in the JSON file
[policy-man-openapi.json](modules/policy/src/main/resources/policy-man-openapi.json)
3. Run the below maven command to generate the REST API client and data models for policy-man. The command must be
executed directly inside the `policy` module.
```ssh
mvn clean generate-sources -DskipPolicyManClientGeneration=false
```
## Static Code Analysis using CheckStyle
This project using `CheckStyle` framework to perform static code analysis. The configuration can be found
in [CheckStyle](checkstyle.xml). The framework also checks the code format in accordance to `Google Java Format`.
The same file can also be imported in IDE CheckStyle plugins to get the analysis results directly in IDE and also to
perform code formatting directly in IDE.
The framework is added as a maven plugin and is executed by default as part of the `verify` phase. Any violations will
result in build failure.
## License/Copyright Configuration
All files in the repository must contain a license header in the format mentioned in [License Header](license.header).
The static code analysis framework will also validate if the license exists in the specified format.
## Dependencies File
All third-party related content is listed in the [DEPENDENCIES](DEPENDENCIES) file.