diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 1970ea2144..9087de5e58 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -26,7 +26,7 @@ jobs:
DAPR_RUNTIME_VER: 1.0.0-rc.2
DAPR_INSTALL_URL: https://raw.githubusercontent.com/dapr/cli/3dacfb672d55f1436c249057aaebbe597e1066f3/install/install.sh
DAPR_CLI_REF:
- DAPR_REF: 4678e477562e7e35a1d6ba04a9b17b6c9c00a025
+ DAPR_REF: f4327d91c3cd921b26077d99abe0f237c9a38f5d
OSSRH_USER_TOKEN: ${{ secrets.OSSRH_USER_TOKEN }}
OSSRH_PWD_TOKEN: ${{ secrets.OSSRH_PWD_TOKEN }}
GPG_KEY: ${{ secrets.GPG_KEY }}
@@ -91,8 +91,6 @@ jobs:
run: |
docker-compose -f ./sdk-tests/deploy/local-test-vault.yml up -d
docker ps
- - name: Setup Vault's test token
- run: echo myroot > /tmp/.hashicorp_vault_token
- name: Clean up files
run: mvn clean
- name: Build sdk
diff --git a/pom.xml b/pom.xml
index 76e32ddbdf..03f8dc25ca 100644
--- a/pom.xml
+++ b/pom.xml
@@ -16,7 +16,7 @@
UTF-8
1.33.1
3.13.0
- https://raw.githubusercontent.com/dapr/dapr/33dc3361e99f75e88628e0abfc8b04d3d7e8bc5f/dapr/proto
+ https://raw.githubusercontent.com/dapr/dapr/4a6369caaba9cf46eae9bfa4fa6e76b474854c89/dapr/proto
1.6.2
3.1.1
1.8
diff --git a/sdk-tests/.hashicorp_vault_token b/sdk-tests/.hashicorp_vault_token
new file mode 100644
index 0000000000..18309abed3
--- /dev/null
+++ b/sdk-tests/.hashicorp_vault_token
@@ -0,0 +1 @@
+myroot
diff --git a/sdk-tests/components/vault.yaml b/sdk-tests/components/vault.yaml
index 633c6426d3..7f52257170 100644
--- a/sdk-tests/components/vault.yaml
+++ b/sdk-tests/components/vault.yaml
@@ -10,6 +10,6 @@ spec:
- name: skipVerify
value : true
- name: vaultTokenMountPath
- value : "/tmp/.hashicorp_vault_token"
+ value : ".hashicorp_vault_token"
- name: vaultKVPrefix
value : "dapr"
diff --git a/sdk-tests/src/test/java/io/dapr/it/secrets/SecretsClientIT.java b/sdk-tests/src/test/java/io/dapr/it/secrets/SecretsClientIT.java
index d87024f5ec..45cea437c0 100644
--- a/sdk-tests/src/test/java/io/dapr/it/secrets/SecretsClientIT.java
+++ b/sdk-tests/src/test/java/io/dapr/it/secrets/SecretsClientIT.java
@@ -21,10 +21,12 @@
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
+import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
/**
* Test Secrets Store APIs using Harshicorp's vault.
@@ -104,6 +106,26 @@ public void getSecret() throws Exception {
assertEquals("The Metrics IV", data.get("title"));
}
+ @Test
+ public void getBulkSecret() throws Exception {
+ String key1 = UUID.randomUUID().toString();
+ writeSecret(key1, new HashMap<>() {{
+ put("title", "The Metrics IV");
+ put("year", "2020");
+ }});
+ String key2 = UUID.randomUUID().toString();
+ writeSecret(key2, "name", "Jon Doe");
+
+ Map> data = daprClient.getBulkSecret(SECRETS_STORE_NAME).block();
+ // There can be other keys from other runs or test cases, so we are good with at least two.
+ assertTrue(data.size() >= 2);
+ assertEquals(2, data.get(key1).size());
+ assertEquals("The Metrics IV", data.get(key1).get("title"));
+ assertEquals("2020", data.get(key1).get("year"));
+ assertEquals(1, data.get(key2).size());
+ assertEquals("Jon Doe", data.get(key2).get("name"));
+ }
+
@Test(expected = RuntimeException.class)
public void getSecretKeyNotFound() {
daprClient.getSecret(SECRETS_STORE_NAME, "unknownKey").block();
@@ -115,7 +137,10 @@ public void getSecretStoreNotFound() throws Exception {
}
private static void writeSecret(String secretName, String key, String value) throws Exception {
- Map secrets = Collections.singletonMap(key, value);
+ writeSecret(secretName, Collections.singletonMap(key, value));
+ }
+
+ private static void writeSecret(String secretName, Map secrets) throws Exception {
vault.logical().write("secret/" + PREFIX + "/" + secretName, secrets);
}
diff --git a/sdk/src/main/java/io/dapr/client/AbstractDaprClient.java b/sdk/src/main/java/io/dapr/client/AbstractDaprClient.java
index 3665f062de..f435d2e00d 100644
--- a/sdk/src/main/java/io/dapr/client/AbstractDaprClient.java
+++ b/sdk/src/main/java/io/dapr/client/AbstractDaprClient.java
@@ -9,6 +9,8 @@
import io.dapr.client.domain.DeleteStateRequestBuilder;
import io.dapr.client.domain.ExecuteStateTransactionRequest;
import io.dapr.client.domain.ExecuteStateTransactionRequestBuilder;
+import io.dapr.client.domain.GetBulkSecretRequest;
+import io.dapr.client.domain.GetBulkSecretRequestBuilder;
import io.dapr.client.domain.GetBulkStateRequestBuilder;
import io.dapr.client.domain.GetSecretRequest;
import io.dapr.client.domain.GetSecretRequestBuilder;
@@ -395,4 +397,23 @@ public Mono