From e4d74a7f8cf4c05d5e22062ab577ceda9f9c526b Mon Sep 17 00:00:00 2001 From: Jemin Date: Sat, 7 Sep 2024 14:04:33 +0900 Subject: [PATCH 1/3] add litmus java sdk proposal Signed-off-by: Jemin --- proposals/java-sdk.md | 45 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 proposals/java-sdk.md diff --git a/proposals/java-sdk.md b/proposals/java-sdk.md new file mode 100644 index 00000000000..edf9b6ab62b --- /dev/null +++ b/proposals/java-sdk.md @@ -0,0 +1,45 @@ +| title | authors | creation-date | last-updated | +|---------------------|--------------------------------------|---------------|--------------| +| add litmus java sdk | [@jemlog](https://github.com/jemlog) | 2024-09-07 | 2024-09-07 | + +# Adding Litmus Java SDK + +- [Summary](#summary) +- [Motivation](#motivation) + - [Goals](#goals) + - [Non-Goals](#non-goals) +- [Proposal](#proposal) + - [Use Cases](#use-cases) + - [Implementation Details](#implementation-details) +- [Risks and Mitigations](#risks-and-mitigations) +- [Upgrade / Downgrade Strategy](#upgrade--downgrade-strategy) +- [Drawbacks](#drawbacks) +- [Alternatives](#alternatives) +- [References](#references) + +## Summary + + +## Motivation + + +### Goals + + +### Non-Goals + +## Proposal + +### Use Cases + +### Implementation Details + +## Risks and Mitigations + +## Upgrade / Downgrade Strategy + +## Drawbacks + +## Alternatives + +## References From 375985a6e0503b71c2ab45d208194e5f1e38ed0a Mon Sep 17 00:00:00 2001 From: Jemin Date: Wed, 11 Sep 2024 22:35:18 +0900 Subject: [PATCH 2/3] update java-sdk-proposal Signed-off-by: Jemin --- proposals/java-sdk.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/proposals/java-sdk.md b/proposals/java-sdk.md index edf9b6ab62b..20d4def025c 100644 --- a/proposals/java-sdk.md +++ b/proposals/java-sdk.md @@ -19,27 +19,53 @@ ## Summary +The purpose of litmus-java-sdk is to provide a client that can easily access to auth and backend server of litmus. ## Motivation +Litmuschaos’ backend server uses graphQL as an API communication method. +Graphql is not as familiar to developers as REST API, so it is difficult to call backend server directly. +Therefore we planned to add a Java-based SDK that makes developers to communicate easily with litmus backend server. +The SDK also provides an interface to communicate with the auth server to wrap the entire litmus control plane. ### Goals +- Add client calling the API for Auth Server +- Add client calling graphQL for Backend Server + ### Non-Goals +- Changing APIs that auth server and backend server already provide is non-goal +- Add auto configuration for SpringBoot is non-goal + ## Proposal ### Use Cases +In organization, litmusChaos administrators can call java SDK to manage multiple users and projects. + ### Implementation Details +```java +public void call(){ + // create client + LitmusClient litmusClient = new LitmusClient("test_user"); + // method call + CreateProjectResponse response = litmusClient.createProject("sample_project"); +} +``` + ## Risks and Mitigations ## Upgrade / Downgrade Strategy ## Drawbacks +It will be a great opportunity for administrators of litmusChaos to manage users and conduct experiments more conveniently. + ## Alternatives +This is the first java sdk we created in Litmus. No other alternatives exist. + ## References From 94dee9e5740ce99dd242a6bde9db8026a0e97c25 Mon Sep 17 00:00:00 2001 From: Jemin Date: Mon, 11 Nov 2024 21:50:19 +0900 Subject: [PATCH 3/3] docs: add usecase of sdk Signed-off-by: Jemin --- proposals/java-sdk.md | 57 ++++++++++++++++++++++++++++++------------- 1 file changed, 40 insertions(+), 17 deletions(-) diff --git a/proposals/java-sdk.md b/proposals/java-sdk.md index 20d4def025c..7cb64046ef8 100644 --- a/proposals/java-sdk.md +++ b/proposals/java-sdk.md @@ -4,18 +4,21 @@ # Adding Litmus Java SDK -- [Summary](#summary) -- [Motivation](#motivation) - - [Goals](#goals) - - [Non-Goals](#non-goals) -- [Proposal](#proposal) - - [Use Cases](#use-cases) - - [Implementation Details](#implementation-details) -- [Risks and Mitigations](#risks-and-mitigations) -- [Upgrade / Downgrade Strategy](#upgrade--downgrade-strategy) -- [Drawbacks](#drawbacks) -- [Alternatives](#alternatives) -- [References](#references) +- [Adding Litmus Java SDK](#adding-litmus-java-sdk) + - [Summary](#summary) + - [Motivation](#motivation) + - [Goals](#goals) + - [Non-Goals](#non-goals) + - [Proposal](#proposal) + - [Use Cases](#use-cases) + - [Implementation Details](#implementation-details) + - [Initialize client](#initialize-client) + - [Use Client](#use-client) + - [Risks and Mitigations](#risks-and-mitigations) + - [Upgrade / Downgrade Strategy](#upgrade--downgrade-strategy) + - [Drawbacks](#drawbacks) + - [Alternatives](#alternatives) + - [References](#references) ## Summary @@ -47,15 +50,35 @@ In organization, litmusChaos administrators can call java SDK to manage multiple ### Implementation Details +#### Initialize client + ```java -public void call(){ - // create client - LitmusClient litmusClient = new LitmusClient("test_user"); - // method call - CreateProjectResponse response = litmusClient.createProject("sample_project"); +public void init(){ + + String hostUrl = "http://localhost:3000"; + String username = "admin"; + String password = "litmus"; + + LitmusClient litmusClient = new LitmusClient(hostUrl, username, password); } ``` +#### Use Client +```java +public void execute(){ + String projectName = "demo project"; + String description = "demo project description"; + List tags = Arrays.asList("litmus", "chaos"); + + CreateProjectRequest request = CreateProjectRequest.builder() + .projectName("project") + .description("description") + .tags(tags) + .build(); + + CreateProjectResponse response = litmusClient.createProject(request); +} +``` ## Risks and Mitigations ## Upgrade / Downgrade Strategy