66 lines
2.3 KiB
Diff
66 lines
2.3 KiB
Diff
From 3382e85c5be6fcf9bf79bf618eca7672b150543c Mon Sep 17 00:00:00 2001
|
|
From: meilier <xingweizheng@huawei.com>
|
|
Date: Fri, 5 Aug 2022 01:00:34 +0800
|
|
Subject: [PATCH 3/6] wasmengine could pull public https' repository image
|
|
|
|
---
|
|
src/function_store/local_store.rs | 27 ++++++++++++++++++++++++---
|
|
1 file changed, 24 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/src/function_store/local_store.rs b/src/function_store/local_store.rs
|
|
index d68c451..2afcd96 100644
|
|
--- a/src/function_store/local_store.rs
|
|
+++ b/src/function_store/local_store.rs
|
|
@@ -1,5 +1,6 @@
|
|
use super::pull;
|
|
use anyhow::{anyhow, Ok, Result};
|
|
+use oci_distribution::client::ClientConfig;
|
|
use oci_distribution::{secrets::RegistryAuth, Client, Reference};
|
|
use serde::{Deserialize, Serialize};
|
|
use std::collections::HashMap;
|
|
@@ -100,11 +101,13 @@ impl FunctionStore {
|
|
));
|
|
}
|
|
|
|
- let mut client = Client::new(pull::build_client_config(true));
|
|
- let reference: Reference = image_name.parse().expect("Not a valid image reference");
|
|
+ let mut client = Client::new(ClientConfig::default());
|
|
+ let reference: Reference = image_name
|
|
+ .parse()
|
|
+ .map_err(|err| anyhow::format_err!("Not a valid image reference: {}", err))?;
|
|
|
|
// pull the wasm image into the local func_store_path
|
|
- pull::pull_wasm(
|
|
+ let pull_result = pull::pull_wasm(
|
|
&mut client,
|
|
&RegistryAuth::Anonymous,
|
|
&reference,
|
|
@@ -112,6 +115,24 @@ impl FunctionStore {
|
|
)
|
|
.await;
|
|
|
|
+ if !pull_result.is_ok() {
|
|
+ let mut client = Client::new(pull::build_client_config(true));
|
|
+ pull::pull_wasm(
|
|
+ &mut client,
|
|
+ &RegistryAuth::Anonymous,
|
|
+ &reference,
|
|
+ func_store_dir.as_str(),
|
|
+ )
|
|
+ .await
|
|
+ .map_err(|err| {
|
|
+ anyhow::format_err!(
|
|
+ "Pull image both failed with https auth: {}, and insecure http: {}",
|
|
+ pull_result.unwrap_err(),
|
|
+ err
|
|
+ )
|
|
+ })?;
|
|
+ }
|
|
+
|
|
// only one wasm module file should be in the func_store_dir
|
|
if read_dir(func_store_dir.clone()).unwrap().count() != 1 {
|
|
return Err(anyhow!(
|
|
--
|
|
2.27.0
|
|
|