Skip to content

Commit 31a8db1

Browse files
authored
Merge pull request #6 from tuddman/rust-sdk-addendum-4
fix(sdk, rust): adds build-able TlsKeyConfig
2 parents 2c56b6a + 25bc06f commit 31a8db1

File tree

5 files changed

+25
-31
lines changed

5 files changed

+25
-31
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

sdk/rust/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ authors = ["Encifher <[email protected]>"]
99
[dependencies]
1010
alloy = { version = "0.15", features = ["signers", "signer-local"] }
1111
anyhow.workspace = true
12+
bon.workspace = true
1213
hex.workspace = true
1314
http.workspace = true
1415
http-client-unix-domain-socket = "0.1.1"

sdk/rust/src/dstack_client.rs

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,19 @@ pub struct EventLog {
5151
event_payload: String,
5252
}
5353

54+
#[derive(bon::Builder, Serialize)]
55+
pub struct TlsKeyConfig {
56+
#[builder(into)]
57+
pub subject: Option<String>,
58+
pub alt_names: Option<Vec<String>>,
59+
#[builder(default = false)]
60+
pub usage_ra_tls: bool,
61+
#[builder(default = true)]
62+
pub usage_server_auth: bool,
63+
#[builder(default = false)]
64+
pub usage_client_auth: bool,
65+
}
66+
5467
#[derive(Serialize, Deserialize)]
5568
pub struct GetKeyResponse {
5669
pub key: String,
@@ -248,22 +261,8 @@ impl DstackClient {
248261
Ok(())
249262
}
250263

251-
pub async fn get_tls_key(
252-
&self,
253-
subject: Option<String>,
254-
alt_names: Option<Vec<String>>,
255-
usage_ra_tls: bool,
256-
usage_server_auth: bool,
257-
usage_client_auth: bool,
258-
) -> Result<GetTlsKeyResponse> {
259-
let data = json!({
260-
"subject": subject.unwrap_or_default(),
261-
"alt_names": alt_names.unwrap_or_default(),
262-
"usage_ra_tls": usage_ra_tls,
263-
"usage_server_auth": usage_server_auth,
264-
"usage_client_auth": usage_client_auth
265-
});
266-
let response = self.send_rpc_request("/GetTlsKey", &data).await?;
264+
pub async fn get_tls_key(&self, tls_key_config: TlsKeyConfig) -> Result<GetTlsKeyResponse> {
265+
let response = self.send_rpc_request("/GetTlsKey", &tls_key_config).await?;
267266
let response = serde_json::from_value::<GetTlsKeyResponse>(response)?;
268267

269268
Ok(response)

sdk/rust/tests/test_client.rs

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,25 +19,19 @@ async fn test_async_client_get_quote() {
1919
#[tokio::test]
2020
async fn test_async_client_get_tls_key() {
2121
let client = AsyncDstackClient::new(None);
22-
let result = client
23-
.get_tls_key(None, None, false, false, false)
24-
.await
25-
.unwrap();
22+
let key_config = dstack_sdk::dstack_client::TlsKeyConfig::builder().build();
23+
let result = client.get_tls_key(key_config).await.unwrap();
2624
assert!(result.key.starts_with("-----BEGIN PRIVATE KEY-----"));
2725
assert!(!result.certificate_chain.is_empty());
2826
}
2927

3028
#[tokio::test]
3129
async fn test_tls_key_uniqueness() {
3230
let client = AsyncDstackClient::new(None);
33-
let result1 = client
34-
.get_tls_key(None, None, false, false, false)
35-
.await
36-
.unwrap();
37-
let result2 = client
38-
.get_tls_key(None, None, false, false, false)
39-
.await
40-
.unwrap();
31+
let key_config_1 = dstack_sdk::dstack_client::TlsKeyConfig::builder().build();
32+
let key_config_2 = dstack_sdk::dstack_client::TlsKeyConfig::builder().build();
33+
let result1 = client.get_tls_key(key_config_1).await.unwrap();
34+
let result2 = client.get_tls_key(key_config_2).await.unwrap();
4135
assert_ne!(result1.key, result2.key);
4236
}
4337

sdk/rust/tests/test_eth.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
use dstack_rust::dstack_client::{DstackClient, GetKeyResponse};
2-
use dstack_rust::ethereum::to_account;
3-
use tokio;
1+
use dstack_sdk::dstack_client::{DstackClient, GetKeyResponse};
2+
use dstack_sdk::ethereum::to_account;
43

54
#[tokio::test]
65
async fn test_async_to_keypair() {

0 commit comments

Comments
 (0)