{"id":25777451,"url":"https://github.com/eclipse-xpanse/xpanse","last_synced_at":"2026-01-11T16:56:45.003Z","repository":{"id":62863019,"uuid":"548798869","full_name":"eclipse-xpanse/xpanse","owner":"eclipse-xpanse","description":"xpanse is here to make native managed cloud services configurable and portable.","archived":false,"fork":false,"pushed_at":"2024-10-29T08:36:50.000Z","size":32868,"stargazers_count":23,"open_issues_count":17,"forks_count":20,"subscribers_count":9,"default_branch":"main","last_synced_at":"2024-10-29T09:53:33.702Z","etag":null,"topics":["cloud","containers","openapi","rest-api","saas","spring-boot"],"latest_commit_sha":null,"homepage":"https://eclipse.dev/xpanse/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eclipse-xpanse.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-10T07:43:58.000Z","updated_at":"2024-10-29T08:36:48.000Z","dependencies_parsed_at":"2023-09-23T04:54:37.481Z","dependency_job_id":"86c45d82-c64b-44f9-880e-3b40ff8d37e3","html_url":"https://github.com/eclipse-xpanse/xpanse","commit_stats":null,"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-xpanse%2Fxpanse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-xpanse%2Fxpanse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-xpanse%2Fxpanse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-xpanse%2Fxpanse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eclipse-xpanse","download_url":"https://codeload.github.com/eclipse-xpanse/xpanse/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240987436,"owners_count":19889335,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloud","containers","openapi","rest-api","saas","spring-boot"],"created_at":"2025-02-27T06:01:43.240Z","updated_at":"2026-01-11T16:56:44.994Z","avatar_url":"https://github.com/eclipse-xpanse.png","language":"Java","funding_links":[],"categories":["云服务"],"sub_categories":[],"readme":"![Xpanse logo](static/full-logo.png)\n\u003cp align='center'\u003e\n\u003ca href=\"https://github.com/eclipse-xpanse/xpanse/actions/workflows/ci.yml\" target=\"_blank\"\u003e\n\t\u003cimg src=\"https://github.com/eclipse-xpanse/xpanse/actions/workflows/ci.yml/badge.svg\" alt=\"build\"\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://github.com/eclipse-xpanse/xpanse/actions/workflows/coverage.yml\" target=\"_blank\"\u003e\n\t\u003cimg src=\"https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/eclipse-xpanse-bot/3d9c022b98734fbf615c21136abe4add/raw/xpanse-coverage.json\" alt=\"coverage\"\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://opensource.org/licenses/Apache-2.0\" target=\"_blank\"\u003e\n\t\u003cimg src=\"https://img.shields.io/badge/License-Apache_2.0-blue.svg\" alt=\"coverage\"\u003e\n\u003c/a\u003e\n\u003c/p\u003e\n\nXpanse is an Open Source project allowing to easily implement native-managed service on any cloud service provider. This\nproject is part of the Open Services Cloud (OSC) charter.\n\nXpanse unleashes your cloud services by removing vendor lock-in and lock out. It standardizes and exposes cloud service\nproviders core services, meaning that your xpanse service is portable (multi-cloud) on any cloud topology and provider.\nIt also avoids tight coupling of your service to other cloud service provider services.\n\n## Developer Setup and contribution guide\n\nAll details on how to set up and run the project can be found on our documentation website\n1. [Developer setup](https://eclipse.dev/xpanse/docs/developer-setup)\n2. [Pull Requests](https://eclipse.dev/xpanse/docs/Contribute/pull-requests)\n\n## Maven Configuration\n\nTo use packages that are not published in maven central,\nyou need to add the contents [from](.github/workflows/.m2/settings.xml) to your local `~/.m2/settings.xml` file.\n\nThis configuration cannot be added to the project pom.xml directly\nsince we publish our project to maven central, and it is not allowed to have dependencies to libraries that are not published in maven central.\n\n\u003e ⚠️ **Warning:** Without this configuration, the build will fail.\n\n## Configuration Language\n\nDetails can be found on the project\nwebsite [here](https://eclipse.dev/xpanse/docs/configuration-language).\n\n## Formatter and Linter\n\nThe project follows [google-code-format](https://github.com/google/google-java-format).\nWe use the [spotless plugin](https://github.com/diffplug/spotless/tree/main/plugin-maven#google-java-format) to format code and to validate code format.\nWe can automatically format the code using the command below.\n\n```shell\nmvn spotless:apply\n```\n\nTo validate errors we can run the command below.\n\n```shell\nmvn spotless:check \u0026\u0026  mvn checkstyle:check\n```\n\n\n## Runtime\n\nDetails can be found on the project website [here](https://eclipse.dev/xpanse/docs/runtime).\n\n## Database\n\nDetails can be found on the project website [here](https://eclipse.dev/xpanse/docs/database).\n\n## Cache\n\nDetails can be found on the project website [here](https://eclipse.dev/xpanse/docs/caching).\n\n## Generate terra-boot client code\n\n1. Run the terra-boot project with spring-profile `oauth` and `dev` with methods mentioned here.\nThis is necessary even if the terra-boot will be actually used without oauth enabled in production.\nThis will make the client to handle both with and without authentication usecases automatically.\n2. Access http://localhost:9090/v3/api-docs to get the openapi json.\n3. Copy all the JSON content of the openapi json and replace all the content in the JSON file\n[terra-boot-openapi.json](modules/deployment/src/main/resources/terra-boot-openapi.json).\n4. Run the below maven command to generate the REST API client and data models for terra-boot. The command must be\nexecuted directly inside the `deployment` module.\n\n```ssh\nmvn clean generate-sources -DskipTerraBootClientGeneration=false\n```\n\n## Generate tofu-maker client code\n\n1. Run the tofu-maker project with spring-profile `oauth` and `dev` with methods mentioned here.\nThis is necessary even if the tofu-maker will be actually used without oauth enabled in production.\nThis will make the client to handle both with and without authentication usecases automatically.\n2. Access http://localhost:9092/v3/api-docs to get the openapi json.\n3. Copy all the JSON content of the openapi json and replace all the content in the JSON file\n[tofu-maker-openapi.json](modules/deployment/src/main/resources/tofu-maker-openapi.json).\n4. Run the below maven command to generate the REST API client and data models for tofu-maker. The\ncommand must be executed directly inside the `deployment` module.\n\n```ssh\nmvn clean generate-sources -DskipTofuMakerClientGeneration=false\n```\n\n## Generate policy-man client code\n\n1. Run the policy-man project and access http://localhost:8090/swagger/doc.json to get the openapi json.\n2. Copy all the JSON content of the openapi json and replace all the content in the JSON file\n[policy-man-openapi.json](modules/policy/src/main/resources/policy-man-openapi.json)\n3. Run the below maven command to generate the REST API client and data models for policy-man. The command must be\nexecuted directly inside the `policy` module.\n\n```ssh\nmvn clean generate-sources -DskipPolicyManClientGeneration=false\n```\n\n## Static Code Analysis using CheckStyle\n\nThis project using `CheckStyle` framework to perform static code analysis. The configuration can be found\nin [CheckStyle](checkstyle.xml). The framework also checks the code format in accordance to `Google Java Format`.\n\nThe same file can also be imported in IDE CheckStyle plugins to get the analysis results directly in IDE and also to\nperform code formatting directly in IDE.\n\nThe framework is added as a maven plugin and is executed by default as part of the `verify` phase. Any violations will\nresult in build failure.\n\n## License/Copyright Configuration\n\nAll files in the repository must contain a license header in the format mentioned in [License Header](license.header).\n\nThe static code analysis framework will also validate if the license exists in the specified format.\n\n## Dependencies File\n\nAll third-party related content is listed in the [DEPENDENCIES](DEPENDENCIES) file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclipse-xpanse%2Fxpanse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feclipse-xpanse%2Fxpanse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclipse-xpanse%2Fxpanse/lists"}