You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@teaclave.apache.org by ms...@apache.org on 2020/03/23 00:10:54 UTC
[incubator-teaclave] 02/03: [types] Use FunctionArguments in other
proto definitions
This is an automated email from the ASF dual-hosted git repository.
mssun pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/incubator-teaclave.git
commit 9a4de971c74ea909807993163bc975825ddc2b13
Author: Mingshen Sun <bo...@mssun.me>
AuthorDate: Sun Mar 22 15:54:07 2020 -0700
[types] Use FunctionArguments in other proto definitions
---
services/execution/enclave/src/service.rs | 28 ++++++-------
services/management/enclave/src/service.rs | 12 +++---
services/management/enclave/src/task.rs | 6 +--
.../src/proto/teaclave_frontend_service.proto | 9 +---
services/proto/src/teaclave_frontend_service.rs | 43 ++++++-------------
.../enclave/src/teaclave_frontend_service.rs | 30 ++++++--------
.../enclave/src/teaclave_management_service.rs | 13 +++---
tests/integration/enclave/src/teaclave_worker.rs | 6 +--
types/src/macros.rs | 2 +-
types/src/staged_function.rs | 48 ++++++++++++++++------
worker/src/function/echo.rs | 2 +-
worker/src/function/gbdt_training.rs | 2 +-
worker/src/function/mesapy.rs | 12 +++---
worker/src/worker.rs | 11 ++---
14 files changed, 110 insertions(+), 114 deletions(-)
diff --git a/services/execution/enclave/src/service.rs b/services/execution/enclave/src/service.rs
index 50bf2e8..11ea963 100644
--- a/services/execution/enclave/src/service.rs
+++ b/services/execution/enclave/src/service.rs
@@ -260,17 +260,17 @@ pub mod tests {
pub fn test_invoke_gbdt_training() {
let task_id = Uuid::new_v4();
- let arg_map = hashmap!(
- "feature_size".to_string() => "4".to_string(),
- "max_depth".to_string() => "4".to_string(),
- "iterations".to_string() => "100".to_string(),
- "shrinkage".to_string() => "0.1".to_string(),
- "feature_sample_ratio".to_string() => "1.0".to_string(),
- "data_sample_ratio".to_string() => "1.0".to_string(),
- "min_leaf_size".to_string() => "1".to_string(),
- "loss".to_string() => "LAD".to_string(),
- "training_optimization_level".to_string() => "2".to_string(),
- );
+ let function_arguments = FunctionArguments::new(hashmap!(
+ "feature_size" => "4",
+ "max_depth" => "4",
+ "iterations" => "100",
+ "shrinkage" => "0.1",
+ "feature_sample_ratio" => "1.0",
+ "data_sample_ratio" => "1.0",
+ "min_leaf_size" => "1",
+ "loss" => "LAD",
+ "training_optimization_level" => "2",
+ ));
let fixture_dir = format!(
"file:///{}/fixtures/functions/gbdt_training",
env!("TEACLAVE_TEST_INSTALL_DIR")
@@ -288,13 +288,13 @@ pub mod tests {
let training_input_data = FunctionInputFile::new(input_url, "", crypto_info);
let model_output_data = FunctionOutputFile::new(output_url, crypto_info);
- let input_data = hashmap!("training_data".to_string() => training_input_data);
- let output_data = hashmap!("trained_model".to_string() => model_output_data);
+ let input_data = hashmap!("training_data" => training_input_data);
+ let output_data = hashmap!("trained_model" => model_output_data);
let staged_task = StagedTask::new()
.task_id(task_id)
.function_name("gbdt_training")
- .function_arguments(arg_map.into())
+ .function_arguments(function_arguments)
.input_data(input_data)
.output_data(output_data);
diff --git a/services/management/enclave/src/service.rs b/services/management/enclave/src/service.rs
index d48ce2f..3c527f1 100644
--- a/services/management/enclave/src/service.rs
+++ b/services/management/enclave/src/service.rs
@@ -315,7 +315,7 @@ impl TeaclaveManagement for TeaclaveManagementService {
let task = crate::task::create_task(
function,
user_id,
- request.arg_list,
+ request.function_arguments,
request.input_data_owner_list,
request.output_data_owner_list,
)
@@ -352,7 +352,7 @@ impl TeaclaveManagement for TeaclaveManagementService {
creator: task.creator,
function_id: task.function_id,
function_owner: task.function_owner,
- arg_list: task.function_arguments.into(),
+ function_arguments: task.function_arguments,
input_data_owner_list: task.input_data_owner_list,
output_data_owner_list: task.output_data_owner_list,
participants: task.participants,
@@ -663,7 +663,8 @@ pub mod tests {
use super::*;
use std::collections::{HashMap, HashSet};
use teaclave_types::{
- FunctionInput, FunctionOutput, TeaclaveFileCryptoInfo, TeaclaveFileRootKey128,
+ hashmap, FunctionArguments, FunctionInput, FunctionOutput, TeaclaveFileCryptoInfo,
+ TeaclaveFileRootKey128,
};
use url::Url;
@@ -730,13 +731,12 @@ pub mod tests {
owner: "mock_user".to_string(),
is_native: false,
};
- let mut arg_list = HashMap::new();
- arg_list.insert("arg".to_string(), "data".to_string());
+ let function_arguments = FunctionArguments::new(hashmap!("arg" => "data"));
let task = crate::task::create_task(
function,
"mock_user".to_string(),
- arg_list,
+ function_arguments,
HashMap::new(),
HashMap::new(),
)
diff --git a/services/management/enclave/src/task.rs b/services/management/enclave/src/task.rs
index c5b804f..5d0b6be 100644
--- a/services/management/enclave/src/task.rs
+++ b/services/management/enclave/src/task.rs
@@ -20,14 +20,15 @@ use std::collections::HashSet;
use std::prelude::v1::*;
use teaclave_types::Function;
use teaclave_types::{
- DataOwnerList, Storable, Task, TaskStatus, TeaclaveInputFile, TeaclaveOutputFile,
+ DataOwnerList, FunctionArguments, Storable, Task, TaskStatus, TeaclaveInputFile,
+ TeaclaveOutputFile,
};
use uuid::Uuid;
pub(crate) fn create_task(
function: Function,
creator: String,
- arg_list: HashMap<String, String>,
+ function_arguments: FunctionArguments,
input_data_owner_list: HashMap<String, DataOwnerList>,
output_data_owner_list: HashMap<String, DataOwnerList>,
) -> Result<Task> {
@@ -47,7 +48,6 @@ pub(crate) fn create_task(
participants.insert(user_id.clone());
}
}
- let function_arguments = arg_list.into();
let task = Task {
task_id,
creator,
diff --git a/services/proto/src/proto/teaclave_frontend_service.proto b/services/proto/src/proto/teaclave_frontend_service.proto
index b2434f4..0ecbce2 100644
--- a/services/proto/src/proto/teaclave_frontend_service.proto
+++ b/services/proto/src/proto/teaclave_frontend_service.proto
@@ -106,14 +106,9 @@ message DataMap {
string data_id = 2;
}
-message Argument {
- string arg_name = 1;
- string arg_value = 2;
-}
-
message CreateTaskRequest {
string function_id = 1;
- repeated Argument arg_list = 2;
+ map<string, string> function_arguments = 2;
repeated DataOwnerList input_data_owner_list = 3;
repeated DataOwnerList output_data_owner_list = 4;
}
@@ -131,7 +126,7 @@ message GetTaskResponse {
string creator = 2;
string function_id = 3;
string function_owner = 4;
- repeated Argument arg_list = 5;
+ map<string, string> function_arguments = 5;
repeated DataOwnerList input_data_owner_list = 6;
repeated DataOwnerList output_data_owner_list = 7;
repeated string participants = 8;
diff --git a/services/proto/src/teaclave_frontend_service.rs b/services/proto/src/teaclave_frontend_service.rs
index 123371d..8878eb6 100644
--- a/services/proto/src/teaclave_frontend_service.rs
+++ b/services/proto/src/teaclave_frontend_service.rs
@@ -10,7 +10,8 @@ use std::collections::{HashMap, HashSet};
use std::prelude::v1::*;
use teaclave_rpc::into_request;
use teaclave_types::{
- DataOwnerList, FunctionInput, FunctionOutput, TaskStatus, TeaclaveFileCryptoInfo,
+ DataOwnerList, FunctionArguments, FunctionInput, FunctionOutput, TaskStatus,
+ TeaclaveFileCryptoInfo,
};
use url::Url;
@@ -264,7 +265,7 @@ pub struct GetFunctionResponse {
#[derive(Debug)]
pub struct CreateTaskRequest {
pub function_id: String,
- pub arg_list: HashMap<String, String>,
+ pub function_arguments: FunctionArguments,
pub input_data_owner_list: HashMap<String, DataOwnerList>,
pub output_data_owner_list: HashMap<String, DataOwnerList>,
}
@@ -305,7 +306,7 @@ pub struct GetTaskResponse {
pub creator: String,
pub function_id: String,
pub function_owner: String,
- pub arg_list: HashMap<String, String>,
+ pub function_arguments: FunctionArguments,
pub input_data_owner_list: HashMap<String, DataOwnerList>,
pub output_data_owner_list: HashMap<String, DataOwnerList>,
pub participants: HashSet<String>,
@@ -845,36 +846,16 @@ pub fn data_owner_list_to_proto<S: std::hash::BuildHasher>(
ret
}
-fn arg_list_from_proto(vector: Vec<proto::Argument>) -> Result<HashMap<String, String>> {
- let mut ret = HashMap::with_capacity(vector.len());
- for item in vector.into_iter() {
- ret.insert(item.arg_name, item.arg_value);
- }
- Ok(ret)
-}
-
-fn arg_list_to_proto(map: HashMap<String, String>) -> Vec<proto::Argument> {
- let mut ret = Vec::with_capacity(map.len());
- for (arg_name, arg_value) in map.into_iter() {
- let argument = proto::Argument {
- arg_name,
- arg_value,
- };
- ret.push(argument);
- }
- ret
-}
-
impl std::convert::TryFrom<proto::CreateTaskRequest> for CreateTaskRequest {
type Error = Error;
fn try_from(proto: proto::CreateTaskRequest) -> Result<Self> {
- let arg_list = arg_list_from_proto(proto.arg_list)?;
+ let function_arguments = proto.function_arguments.into();
let input_data_owner_list = data_owner_list_from_proto(proto.input_data_owner_list)?;
let output_data_owner_list = data_owner_list_from_proto(proto.output_data_owner_list)?;
let ret = Self {
function_id: proto.function_id,
- arg_list,
+ function_arguments,
input_data_owner_list,
output_data_owner_list,
};
@@ -884,13 +865,13 @@ impl std::convert::TryFrom<proto::CreateTaskRequest> for CreateTaskRequest {
impl From<CreateTaskRequest> for proto::CreateTaskRequest {
fn from(request: CreateTaskRequest) -> Self {
- let arg_list = arg_list_to_proto(request.arg_list);
+ let function_arguments = request.function_arguments.into();
let input_data_owner_list = data_owner_list_to_proto(request.input_data_owner_list);
let output_data_owner_list = data_owner_list_to_proto(request.output_data_owner_list);
Self {
function_id: request.function_id,
- arg_list,
+ function_arguments,
input_data_owner_list,
output_data_owner_list,
}
@@ -958,7 +939,7 @@ impl std::convert::TryFrom<proto::GetTaskResponse> for GetTaskResponse {
type Error = Error;
fn try_from(proto: proto::GetTaskResponse) -> Result<Self> {
- let arg_list = arg_list_from_proto(proto.arg_list)?;
+ let function_arguments = proto.function_arguments.into();
let input_data_owner_list = data_owner_list_from_proto(proto.input_data_owner_list)?;
let output_data_owner_list = data_owner_list_from_proto(proto.output_data_owner_list)?;
let input_map = data_map_from_proto(proto.input_map)?;
@@ -970,7 +951,7 @@ impl std::convert::TryFrom<proto::GetTaskResponse> for GetTaskResponse {
creator: proto.creator,
function_id: proto.function_id,
function_owner: proto.function_owner,
- arg_list,
+ function_arguments,
input_data_owner_list,
output_data_owner_list,
participants: proto.participants.into_iter().collect(),
@@ -986,7 +967,7 @@ impl std::convert::TryFrom<proto::GetTaskResponse> for GetTaskResponse {
impl From<GetTaskResponse> for proto::GetTaskResponse {
fn from(response: GetTaskResponse) -> Self {
- let arg_list = arg_list_to_proto(response.arg_list);
+ let function_arguments = response.function_arguments.into();
let input_data_owner_list = data_owner_list_to_proto(response.input_data_owner_list);
let output_data_owner_list = data_owner_list_to_proto(response.output_data_owner_list);
let input_map = data_map_to_proto(response.input_map);
@@ -997,7 +978,7 @@ impl From<GetTaskResponse> for proto::GetTaskResponse {
creator: response.creator,
function_id: response.function_id,
function_owner: response.function_owner,
- arg_list,
+ function_arguments,
input_data_owner_list,
output_data_owner_list,
participants: response.participants.into_iter().collect(),
diff --git a/tests/functional/enclave/src/teaclave_frontend_service.rs b/tests/functional/enclave/src/teaclave_frontend_service.rs
index b670133..5982981 100644
--- a/tests/functional/enclave/src/teaclave_frontend_service.rs
+++ b/tests/functional/enclave/src/teaclave_frontend_service.rs
@@ -276,11 +276,10 @@ fn test_create_task() {
let function_id = "function-00000000-0000-0000-0000-000000000002";
let mut output_data_owner_list = HashMap::new();
output_data_owner_list.insert("output".to_string(), data_owner_id_list);
+ let function_arguments = FunctionArguments::new(hashmap!("arg1" => "data1"));
let request = CreateTaskRequest {
function_id: function_id.to_string(),
- arg_list: vec![("arg1".to_string(), "data1".to_string())]
- .into_iter()
- .collect(),
+ function_arguments,
input_data_owner_list: HashMap::new(),
output_data_owner_list: output_data_owner_list.clone(),
};
@@ -288,11 +287,10 @@ fn test_create_task() {
assert!(response.is_ok());
assert!(!response.unwrap().task_id.is_empty());
+ let function_arguments = FunctionArguments::new(hashmap!("arg1" => "data1"));
let request = CreateTaskRequest {
function_id: function_id.to_string(),
- arg_list: vec![("arg1".to_string(), "data1".to_string())]
- .into_iter()
- .collect(),
+ function_arguments,
input_data_owner_list: HashMap::new(),
output_data_owner_list,
};
@@ -313,11 +311,10 @@ fn test_get_task() {
};
let mut output_data_owner_list = HashMap::new();
output_data_owner_list.insert("output".to_string(), data_owner_id_list);
+ let function_arguments = FunctionArguments::new(hashmap!("arg1" => "data1"));
let request = CreateTaskRequest {
function_id: "function-00000000-0000-0000-0000-000000000002".to_string(),
- arg_list: vec![("arg1".to_string(), "data1".to_string())]
- .into_iter()
- .collect(),
+ function_arguments,
input_data_owner_list: HashMap::new(),
output_data_owner_list,
};
@@ -345,11 +342,10 @@ fn test_assign_data() {
};
let mut output_data_owner_list = HashMap::new();
output_data_owner_list.insert("output".to_string(), data_owner_id_list);
+ let function_arguments = FunctionArguments::new(hashmap!("arg1" => "data1"));
let request = CreateTaskRequest {
function_id: "function-00000000-0000-0000-0000-000000000002".to_string(),
- arg_list: vec![("arg1".to_string(), "data1".to_string())]
- .into_iter()
- .collect(),
+ function_arguments,
input_data_owner_list: HashMap::new(),
output_data_owner_list,
};
@@ -399,11 +395,10 @@ fn test_approve_task() {
};
let mut output_data_owner_list = HashMap::new();
output_data_owner_list.insert("output".to_string(), data_owner_id_list);
+ let function_arguments = FunctionArguments::new(hashmap!("arg1" => "data1"));
let request = CreateTaskRequest {
function_id: "function-00000000-0000-0000-0000-000000000002".to_string(),
- arg_list: vec![("arg1".to_string(), "data1".to_string())]
- .into_iter()
- .collect(),
+ function_arguments,
input_data_owner_list: HashMap::new(),
output_data_owner_list,
};
@@ -450,11 +445,10 @@ fn test_invoke_task() {
};
let mut output_data_owner_list = HashMap::new();
output_data_owner_list.insert("output".to_string(), data_owner_id_list);
+ let function_arguments = FunctionArguments::new(hashmap!("arg1" => "data1"));
let request = CreateTaskRequest {
function_id: "function-00000000-0000-0000-0000-000000000002".to_string(),
- arg_list: vec![("arg1".to_string(), "data1".to_string())]
- .into_iter()
- .collect(),
+ function_arguments,
input_data_owner_list: HashMap::new(),
output_data_owner_list,
};
diff --git a/tests/functional/enclave/src/teaclave_management_service.rs b/tests/functional/enclave/src/teaclave_management_service.rs
index d802df1..c97fc75 100644
--- a/tests/functional/enclave/src/teaclave_management_service.rs
+++ b/tests/functional/enclave/src/teaclave_management_service.rs
@@ -220,9 +220,10 @@ fn test_get_function() {
}
fn get_correct_create_task() -> CreateTaskRequest {
- let mut arg_list = HashMap::new();
- arg_list.insert("arg1".to_string(), "data1".to_string());
- arg_list.insert("arg2".to_string(), "data2".to_string());
+ let function_arguments = FunctionArguments::new(hashmap!(
+ "arg1" => "data1",
+ "arg2" => "data2",
+ ));
let data_owner_id_list = DataOwnerList {
user_id_list: vec!["mock_user1".to_string()].into_iter().collect(),
};
@@ -240,7 +241,7 @@ fn get_correct_create_task() -> CreateTaskRequest {
CreateTaskRequest {
function_id: "function-00000000-0000-0000-0000-000000000001".to_string(),
- arg_list,
+ function_arguments,
input_data_owner_list,
output_data_owner_list,
}
@@ -249,7 +250,7 @@ fn get_correct_create_task() -> CreateTaskRequest {
fn test_create_task() {
let request = CreateTaskRequest {
function_id: "invalid_function".to_string(),
- arg_list: HashMap::new(),
+ function_arguments: HashMap::new().into(),
input_data_owner_list: HashMap::new(),
output_data_owner_list: HashMap::new(),
};
@@ -262,7 +263,7 @@ fn test_create_task() {
assert!(response.is_ok());
let mut request = get_correct_create_task();
- request.arg_list.remove("arg1");
+ request.function_arguments.inner_mut().remove("arg1");
let response = client.create_task(request);
assert!(response.is_err());
diff --git a/tests/integration/enclave/src/teaclave_worker.rs b/tests/integration/enclave/src/teaclave_worker.rs
index 7d2feb4..9956587 100644
--- a/tests/integration/enclave/src/teaclave_worker.rs
+++ b/tests/integration/enclave/src/teaclave_worker.rs
@@ -7,7 +7,7 @@ use teaclave_types::{
use teaclave_worker::Worker;
fn test_start_worker() {
- let arguments = FunctionArguments::from_map(&hashmap!(
+ let arguments = FunctionArguments::new(hashmap!(
"feature_size" => "4",
"max_depth" => "4",
"iterations" => "100",
@@ -26,12 +26,12 @@ fn test_start_worker() {
let input_info = StagedInputFile::create_with_plaintext_file(plain_input).unwrap();
let input_files = StagedFiles::new(hashmap!(
- "training_data".to_string() => input_info));
+ "training_data" => input_info));
let output_info = StagedOutputFile::new(enc_output, TeaclaveFileRootKey128::random());
let output_files = StagedFiles::new(hashmap!(
- "trained_model".to_string() => output_info.clone()));
+ "trained_model" => output_info.clone()));
let staged_function = StagedFunction::new()
.name("gbdt_training")
diff --git a/types/src/macros.rs b/types/src/macros.rs
index 34e0ab0..db59a38 100644
--- a/types/src/macros.rs
+++ b/types/src/macros.rs
@@ -3,7 +3,7 @@ macro_rules! hashmap {
($( $key: expr => $value: expr,)+) => { hashmap!($($key => $value),+) };
($( $key: expr => $value: expr ),*) => {{
let mut map = ::std::collections::HashMap::new();
- $( map.insert($key, $value); )*
+ $( map.insert($key.into(), $value.into()); )*
map
}}
}
diff --git a/types/src/staged_function.rs b/types/src/staged_function.rs
index cff442c..8048e14 100644
--- a/types/src/staged_function.rs
+++ b/types/src/staged_function.rs
@@ -12,6 +12,30 @@ pub struct ArgumentValue {
inner: String,
}
+impl From<String> for ArgumentValue {
+ fn from(value: String) -> Self {
+ ArgumentValue::new(value)
+ }
+}
+
+impl From<&str> for ArgumentValue {
+ fn from(value: &str) -> Self {
+ ArgumentValue::new(value.into())
+ }
+}
+
+impl From<&String> for ArgumentValue {
+ fn from(value: &String) -> Self {
+ ArgumentValue::new(value.into())
+ }
+}
+
+impl From<ArgumentValue> for String {
+ fn from(value: ArgumentValue) -> Self {
+ value.as_str().to_owned()
+ }
+}
+
impl ArgumentValue {
pub fn new(value: String) -> Self {
Self { inner: value }
@@ -72,28 +96,28 @@ impl<S: core::default::Default + std::hash::BuildHasher> From<FunctionArguments>
impl From<HashMap<String, String>> for FunctionArguments {
fn from(map: HashMap<String, String>) -> Self {
- FunctionArguments::from_map(&map)
- }
-}
-
-impl FunctionArguments {
- pub fn from_map<K, V>(input: &HashMap<K, V>) -> Self
- where
- K: std::string::ToString,
- V: std::string::ToString,
- {
- let inner = input.iter().fold(HashMap::new(), |mut acc, (k, v)| {
- acc.insert(k.to_string(), ArgumentValue::new(v.to_string()));
+ let inner = map.iter().fold(HashMap::new(), |mut acc, (k, v)| {
+ acc.insert(k.into(), v.into());
acc
});
Self { inner }
}
+}
+
+impl FunctionArguments {
+ pub fn new(map: HashMap<String, ArgumentValue>) -> Self {
+ Self { inner: map }
+ }
pub fn inner(&self) -> &HashMap<String, ArgumentValue> {
&self.inner
}
+ pub fn inner_mut(&mut self) -> &mut HashMap<String, ArgumentValue> {
+ &mut self.inner
+ }
+
pub fn get(&self, key: &str) -> anyhow::Result<&ArgumentValue> {
self.inner
.get(key)
diff --git a/worker/src/function/echo.rs b/worker/src/function/echo.rs
index a98ee16..5d46bb2 100644
--- a/worker/src/function/echo.rs
+++ b/worker/src/function/echo.rs
@@ -54,7 +54,7 @@ pub mod tests {
}
fn test_echo() {
- let func_args = FunctionArguments::from_map(&hashmap!(
+ let func_args = FunctionArguments::new(hashmap!(
"message" => "Hello Teaclave!"
));
diff --git a/worker/src/function/gbdt_training.rs b/worker/src/function/gbdt_training.rs
index df45c6f..5287435 100644
--- a/worker/src/function/gbdt_training.rs
+++ b/worker/src/function/gbdt_training.rs
@@ -150,7 +150,7 @@ pub mod tests {
}
fn test_gbdt_training() {
- let func_arguments = FunctionArguments::from_map(&hashmap!(
+ let func_arguments = FunctionArguments::new(hashmap!(
"feature_size" => "4",
"max_depth" => "4",
"iterations" => "100",
diff --git a/worker/src/function/mesapy.rs b/worker/src/function/mesapy.rs
index b1d4828..2ba6a1a 100644
--- a/worker/src/function/mesapy.rs
+++ b/worker/src/function/mesapy.rs
@@ -119,7 +119,7 @@ pub mod tests {
}
fn test_mesapy() {
- let py_args = FunctionArguments::from_map(&hashmap!("--name" => "Teaclave"));
+ let py_args = FunctionArguments::new(hashmap!("--name" => "Teaclave"));
let py_payload = r#"
def entrypoint(argv):
in_file_id = "in_f1"
@@ -157,8 +157,8 @@ def entrypoint(argv):
teaclave_open("invalid_key", "wb")
except RuntimeError as e:
assert e.message == "fileio_init: teaclave_ffi_error"
-
- # open invalid option
+
+ # open invalid option
try:
teaclave_open(out_file_id, "w")
except RuntimeError as e:
@@ -181,9 +181,9 @@ def entrypoint(argv):
};
let runtime = Box::new(RawIoRuntime::new(input_files, output_files));
- let func_args = FunctionArguments::from_map(&hashmap!(
- "py_payload".to_string() => py_payload.to_string(),
- "py_args".to_string() => serde_json::to_string(&py_args).unwrap()
+ let func_args = FunctionArguments::new(hashmap!(
+ "py_payload" => py_payload.to_string(),
+ "py_args" => serde_json::to_string(&py_args).unwrap()
));
let function = Mesapy;
diff --git a/worker/src/worker.rs b/worker/src/worker.rs
index bbcdf68..6166778 100644
--- a/worker/src/worker.rs
+++ b/worker/src/worker.rs
@@ -25,7 +25,7 @@ use anyhow;
use serde_json;
use teaclave_types::{
- ExecutorType, FunctionArguments, StagedFiles, StagedFunction, StagedInputFile,
+ hashmap, ExecutorType, FunctionArguments, StagedFiles, StagedFunction, StagedInputFile,
StagedOutputFile, WorkerCapability,
};
@@ -162,11 +162,12 @@ fn prepare_arguments(
!function_payload.is_empty(),
"Python function payload must not be empty!"
);
- let mut wrap_args = HashMap::new();
let req_args = serde_json::to_string(&function_arguments)?;
- wrap_args.insert("py_payload".to_string(), function_payload);
- wrap_args.insert("py_args".to_string(), req_args);
- FunctionArguments::from_map(&wrap_args)
+ let wrap_args = hashmap!(
+ "py_payload" => function_payload,
+ "py_args" => req_args,
+ );
+ FunctionArguments::new(wrap_args)
}
};
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@teaclave.apache.org
For additional commands, e-mail: commits-help@teaclave.apache.org