From 01c80eb7a693e15de6455ea3d1ae51e7eda6a8cf Mon Sep 17 00:00:00 2001
From: Charles Dubois <103174266+CharlesDuboisSAP@users.noreply.github.com>
Date: Wed, 14 Aug 2024 13:18:29 +0200
Subject: [PATCH] Changed service key env var to `AICORE_SERVICE_KEY` (#16)
* Changed service key env var to `AICORE`
* Changed service key env var to `AICORE_SERVICE_KEY`
* Fixed test
* README
* README again
---
.github/workflows/e2e-test.yaml | 4 ++--
README.md | 7 +++++--
core/src/main/java/com/sap/ai/sdk/core/Core.java | 10 +++++-----
core/src/test/java/com/sap/ai/sdk/core/CoreTest.java | 8 ++++----
4 files changed, 16 insertions(+), 13 deletions(-)
diff --git a/.github/workflows/e2e-test.yaml b/.github/workflows/e2e-test.yaml
index 7c9fe989..de33b871 100644
--- a/.github/workflows/e2e-test.yaml
+++ b/.github/workflows/e2e-test.yaml
@@ -36,7 +36,7 @@ jobs:
mvn $MVN_ARGS
env:
# See "End-to-end test application instructions" on the README.md to update the secret
- aicore: ${{ secrets.AICORE_SERVICE_KEY }}
+ AICORE_SERVICE_KEY: ${{ secrets.AICORE_SERVICE_KEY }}
- name: "Start Application Locally"
run: |
@@ -53,7 +53,7 @@ jobs:
done
env:
# See "End-to-end test application instructions" on the README.md to update the secret
- aicore: ${{ secrets.AICORE_SERVICE_KEY }}
+ AICORE_SERVICE_KEY: ${{ secrets.AICORE_SERVICE_KEY }}
- name: "Health Check"
# print response body with headers to stdout. q:body only O:print -:stdout S:headers
diff --git a/README.md b/README.md
index 813d9450..abb1aab2 100644
--- a/README.md
+++ b/README.md
@@ -407,13 +407,16 @@ For more customization, creating a [HeaderProvider](https://sap.github.io/cloud-
### Set AI Core credentials as environment variable
+- Running the application locally without a service binding will throw:
+
+ `Could not find any matching service bindings for service identifier 'aicore'`
- Go into the BTP Cockpit
- Instances and Subscriptions -> Instances -> AI Core -> View Credentials -> Copy JSON
-- Set it as an environment variable `aicore` in your IDE
+- Set it as an environment variable `AICORE_SERVICE_KEY` in your IDE
Or in your terminal:
```shell
-export aicore='{ "serviceurls": { "AI_API_URL": ...'
+export AICORE_SERVICE_KEY='{ "serviceurls": { "AI_API_URL": ...'
```
### Run the Spring Boot application
diff --git a/core/src/main/java/com/sap/ai/sdk/core/Core.java b/core/src/main/java/com/sap/ai/sdk/core/Core.java
index 0ccf5cc5..d831b6b4 100644
--- a/core/src/main/java/com/sap/ai/sdk/core/Core.java
+++ b/core/src/main/java/com/sap/ai/sdk/core/Core.java
@@ -74,7 +74,7 @@ private static String getOrchestrationDeployment(@Nonnull final String resourceG
/**
* Requires an AI Core service binding OR a service key in the environment variable {@code
- * aicore}.
+ * AICORE_SERVICE_KEY}.
*
* @return a generic AI Core
ApiClient.
*/
@@ -115,13 +115,13 @@ public static ApiClient getClient(@Nonnull final Destination destination) {
/**
* Requires an AI Core service binding OR a service key in the environment variable {@code
- * aicore}.
+ * AICORE_SERVICE_KEY}.
*
* @return a destination pointing to the AI Core service.
*/
@Nonnull
public static Destination getDestination() {
- final var serviceKey = System.getenv("aicore");
+ final var serviceKey = System.getenv("AICORE_SERVICE_KEY");
final var serviceKeyPresent = serviceKey != null;
final var aiCoreBindingPresent =
DefaultServiceBindingAccessor.getInstance().getServiceBindings().stream()
@@ -160,7 +160,7 @@ public static Destination getDestination() {
private static void addServiceBinding(@Nonnull final String serviceKey) {
log.info(
"""
- Found a service key in environment variable "aicore".
+ Found a service key in environment variable "AICORE_SERVICE_KEY".
Using a service key is recommended for local testing only.
Bind the AI Core service to the application for productive usage.""");
@@ -169,7 +169,7 @@ private static void addServiceBinding(@Nonnull final String serviceKey) {
credentials = new ObjectMapper().readValue(serviceKey, new TypeReference<>() {});
} catch (JsonProcessingException e) {
throw new AiCoreCredentialsInvalidException(
- "Error in parsing service key from the \"aicore\" environment variable.", e);
+ "Error in parsing service key from the \"AICORE_SERVICE_KEY\" environment variable.", e);
}
final var binding =
diff --git a/core/src/test/java/com/sap/ai/sdk/core/CoreTest.java b/core/src/test/java/com/sap/ai/sdk/core/CoreTest.java
index e4d34b0f..d76c1828 100644
--- a/core/src/test/java/com/sap/ai/sdk/core/CoreTest.java
+++ b/core/src/test/java/com/sap/ai/sdk/core/CoreTest.java
@@ -19,7 +19,7 @@ public class CoreTest {
@Test
@SneakyThrows
void getDestinationWithoutEnvVarFailsLocally() {
- variables.set("aicore", null);
+ variables.set("AICORE_SERVICE_KEY", null);
assertThatThrownBy(Core::getDestination)
.isExactlyInstanceOf(DestinationAccessException.class)
.hasMessage("Could not find any matching service bindings for service identifier 'aicore'");
@@ -28,17 +28,17 @@ void getDestinationWithoutEnvVarFailsLocally() {
@Test
@SneakyThrows
void getDestinationWithBrokenEnvVarFailsLocally() {
- variables.set("aicore", "");
+ variables.set("AICORE_SERVICE_KEY", "");
assertThatThrownBy(Core::getDestination)
.isExactlyInstanceOf(Core.AiCoreCredentialsInvalidException.class)
- .hasMessage("Error in parsing service key from the \"aicore\" environment variable.");
+ .hasMessage("Error in parsing service key from the \"AICORE_SERVICE_KEY\" environment variable.");
}
@Test
@SneakyThrows
void getDestinationWithEnvVarSucceedsLocally() {
variables.set(
- "aicore",
+ "AICORE_SERVICE_KEY",
"""
{
"clientid": "",