From c1f3035c8a259fcdec2ac83d85610c0514bc269c Mon Sep 17 00:00:00 2001 From: boneyard93501 <4523011+boneyard93501@users.noreply.github.com> Date: Sun, 23 Apr 2023 20:29:10 -0500 Subject: [PATCH] put/get updates --- .../.fluence/aqua/services.aqua | 14 ++++-- .../url-downloader/.fluence/aqua/workers.aqua | 8 ++-- .../url-downloader/.fluence/workers.yaml | 10 ++--- .../modules/url_downloader/src/main.rs | 41 +++++++++++++---- .../url-downloader/src/aqua/main.aqua | 44 ++++++++++++++----- 5 files changed, 87 insertions(+), 30 deletions(-) diff --git a/marine-examples/url-downloader/.fluence/aqua/services.aqua b/marine-examples/url-downloader/.fluence/aqua/services.aqua index 39d6277..e4d2a17 100644 --- a/marine-examples/url-downloader/.fluence/aqua/services.aqua +++ b/marine-examples/url-downloader/.fluence/aqua/services.aqua @@ -1,4 +1,12 @@ +data GetResult: + stdout: []u8 + stderr: string + +data PutResult: + stdout: string + stderr: string + service UrlDownloader("url_downloader"): - get(file_name: string) -> []u8 - get_n_save(url: string, file_name: string) -> string - put(file_name: string, file_content: []u8) -> string + get(file_name: string) -> GetResult + get_n_save(url: string, file_name: string) -> PutResult + put(file_name: string, file_content: []u8) -> PutResult diff --git a/marine-examples/url-downloader/.fluence/aqua/workers.aqua b/marine-examples/url-downloader/.fluence/aqua/workers.aqua index ab6b940..33c4ddb 100644 --- a/marine-examples/url-downloader/.fluence/aqua/workers.aqua +++ b/marine-examples/url-downloader/.fluence/aqua/workers.aqua @@ -1,10 +1,10 @@ data GetWorkersInfoDealsDefaultWorker: - definition: string timestamp: string - dealIdOriginal: string - dealId: string + definition: string chainNetwork: string chainNetworkId: u64 + dealIdOriginal: string + dealId: string data GetWorkersInfoDeals: defaultWorker: GetWorkersInfoDealsDefaultWorker @@ -28,4 +28,4 @@ data GetWorkersInfo: hosts: GetWorkersInfoHosts func getWorkersInfo() -> GetWorkersInfo: - <- GetWorkersInfo(deals=GetWorkersInfoDeals(defaultWorker=GetWorkersInfoDealsDefaultWorker(definition="bafkreicdordcic2qmd2pnacl5adffsuhwg4eleu4prcgaldjvzr6ds2f2m",timestamp="2023-04-23T07:01:18.682Z",dealIdOriginal="0x9d7503E13Bc2d3430536e3d5D635D8172141d884",dealId="9d7503e13bc2d3430536e3d5d635d8172141d884",chainNetwork="testnet",chainNetworkId=1313161555)),hosts=GetWorkersInfoHosts(defaultWorker=GetWorkersInfoHostsDefaultWorker(definition="bafkreicdordcic2qmd2pnacl5adffsuhwg4eleu4prcgaldjvzr6ds2f2m",installationSpells=[GetWorkersInfoHostsDefaultWorkerInstallationSpells(hostId="12D3KooWJ4bTHirdTFNZpCS72TAzwtdmavTBkkEXtzo6wHL25CtE",spellId="039f4e06-923e-4a21-8814-8164fa9b137c",workerId="12D3KooWKsxVXgnpL4wrTts9d49jiNSEN1auaxotdMYa4HpFS66g")],timestamp="2023-04-23T07:00:05.549Z",relayId="12D3KooWAKNos2KogexTXhrkMZzFYpLHuWJ4PgoAhurSAv7o5CWA"))) + <- GetWorkersInfo(deals=GetWorkersInfoDeals(defaultWorker=GetWorkersInfoDealsDefaultWorker(timestamp="2023-04-24T00:18:54.042Z",definition="bafkreifh4vhq5kqpkbhaxmb4iuzg7rr33oxjvksxmarwkekotj26u2vsju",chainNetwork="testnet",chainNetworkId=1313161555,dealIdOriginal="0x9d7503E13Bc2d3430536e3d5D635D8172141d884",dealId="9d7503e13bc2d3430536e3d5d635d8172141d884")),hosts=GetWorkersInfoHosts(defaultWorker=GetWorkersInfoHostsDefaultWorker(definition="bafkreifh4vhq5kqpkbhaxmb4iuzg7rr33oxjvksxmarwkekotj26u2vsju",installationSpells=[GetWorkersInfoHostsDefaultWorkerInstallationSpells(hostId="12D3KooWJ4bTHirdTFNZpCS72TAzwtdmavTBkkEXtzo6wHL25CtE",spellId="039f4e06-923e-4a21-8814-8164fa9b137c",workerId="12D3KooWKsxVXgnpL4wrTts9d49jiNSEN1auaxotdMYa4HpFS66g")],timestamp="2023-04-23T23:47:35.550Z",relayId="12D3KooWMigkP4jkVyufq5JnDJL6nXvyjeaDNpRfEZqQhsG3sYCU"))) diff --git a/marine-examples/url-downloader/.fluence/workers.yaml b/marine-examples/url-downloader/.fluence/workers.yaml index 603a239..b6b66a8 100644 --- a/marine-examples/url-downloader/.fluence/workers.yaml +++ b/marine-examples/url-downloader/.fluence/workers.yaml @@ -7,17 +7,17 @@ version: 0 hosts: defaultWorker: - definition: bafkreicdordcic2qmd2pnacl5adffsuhwg4eleu4prcgaldjvzr6ds2f2m + definition: bafkreifh4vhq5kqpkbhaxmb4iuzg7rr33oxjvksxmarwkekotj26u2vsju installation_spells: - host_id: 12D3KooWJ4bTHirdTFNZpCS72TAzwtdmavTBkkEXtzo6wHL25CtE spell_id: 039f4e06-923e-4a21-8814-8164fa9b137c worker_id: 12D3KooWKsxVXgnpL4wrTts9d49jiNSEN1auaxotdMYa4HpFS66g - timestamp: 2023-04-23T07:00:05.549Z - relayId: 12D3KooWAKNos2KogexTXhrkMZzFYpLHuWJ4PgoAhurSAv7o5CWA + timestamp: 2023-04-23T23:47:35.550Z + relayId: 12D3KooWMigkP4jkVyufq5JnDJL6nXvyjeaDNpRfEZqQhsG3sYCU deals: defaultWorker: - definition: bafkreicdordcic2qmd2pnacl5adffsuhwg4eleu4prcgaldjvzr6ds2f2m - timestamp: 2023-04-23T07:01:18.682Z + definition: bafkreifh4vhq5kqpkbhaxmb4iuzg7rr33oxjvksxmarwkekotj26u2vsju + timestamp: 2023-04-24T00:18:54.042Z dealIdOriginal: "0x9d7503E13Bc2d3430536e3d5D635D8172141d884" dealId: 9d7503e13bc2d3430536e3d5d635d8172141d884 chainNetwork: testnet diff --git a/marine-examples/url-downloader/service/modules/url_downloader/src/main.rs b/marine-examples/url-downloader/service/modules/url_downloader/src/main.rs index 34dce14..43c5c88 100644 --- a/marine-examples/url-downloader/service/modules/url_downloader/src/main.rs +++ b/marine-examples/url-downloader/service/modules/url_downloader/src/main.rs @@ -10,26 +10,51 @@ pub fn main() { WasmLoggerBuilder::new().build().unwrap(); } + +#[marine] +pub struct PutResult { + stdout: String, + stderr: String, +} + +#[marine] +pub struct GetResult { + stdout: Vec, + stderr: String, +} + /// Combining of modules: `curl` and `local_storage`. /// Calls `curl` and stores returned result into a file. #[marine] -pub fn get_n_save(url: String, file_name: String) -> String { +pub fn get_n_save(url: String, file_name: String) -> PutResult { log::info!("get_n_save called with {} {}\n", url, file_name); let result = download(url); - file_put(file_name, result.into_bytes()); - - String::from("Ok") + put(file_name, result.into_bytes()) } #[marine] -pub fn put(file_name: String, file_content: Vec) -> String { - file_put(file_name, file_content) +pub fn put(file_name: String, file_content: Vec) -> PutResult { + let res = file_put(file_name, file_content); + + if res == String::from("Ok") { + PutResult { stdout: res, stderr: String::from("")} + } + else { + PutResult { stdout: String::from(""), stderr: res} + } } #[marine] -pub fn get(file_name: String) -> Vec { - file_get(file_name) +pub fn get(file_name: String) -> GetResult { + let res = file_get(file_name); + + if res == b"error while reading file" { + GetResult { stdout: vec!(), stderr: String::from_utf8(res).unwrap()} + } + else { + GetResult { stdout: res, stderr: String::from("")} + } } /// Importing `curl` module diff --git a/marine-examples/url-downloader/src/aqua/main.aqua b/marine-examples/url-downloader/src/aqua/main.aqua index 093352f..8f5c78c 100644 --- a/marine-examples/url-downloader/src/aqua/main.aqua +++ b/marine-examples/url-downloader/src/aqua/main.aqua @@ -6,54 +6,78 @@ import "@fluencelabs/spell/spell_service.aqua" import "workers.aqua" import "services.aqua" -export put, get +export put, get_with_ids, get_without_ids, get_bad export put_workers, get_workers, get_and_save_workers +-- functions to interact with deal deployed services func getWorkers() -> []Record: workersInfo <- getWorkersInfo() dealId = workersInfo.deals.defaultWorker.dealId workersOp <- resolveSubnetwork(dealId) <- workersOp! -func put(file_name: string, file_content: []u8) -> string: +func put(file_name: string, file_content: []u8) -> PutResult, string, string: workers <- getWorkers() - w = workers[0] + w = workers[5] on w.metadata.peer_id via w.metadata.relay_id: res <- UrlDownloader.put(file_name, file_content) + <- res, w.metadata.peer_id, w.metadata.relay_id! + +func get_without_ids(file_name: string) -> [][]u8: + result: *[]u8 + workers <- getWorkers() + for w <- workers par: + on w.metadata.peer_id via w.metadata.relay_id: + res <- UrlDownloader.get(file_name) + -- if res.stderr == "": + -- result <<- res.stdout + -- else: + -- result <<- [] + result <<- res.stdout + par Peer.timeout(10000, "Finding file timed out.") + join result[workers.length - 1] + <- result + +func get_with_ids(file_name: string, peer_id: string, relay_id: string) -> GetResult: + on peer_id via relay_id: + res <- UrlDownloader.get(file_name) <- res - -func get(file_name: string) -> []u8: +func get_bad(file_name: string) -> GetResult: workers <- getWorkers() w = workers[0] on w.metadata.peer_id via w.metadata.relay_id: res <- UrlDownloader.get(file_name) <- res -func get_and_save(url: string, fname: string) -> string: +func get_and_save(url: string, fname: string) -> PutResult: workers <- getWorkers() w = workers[0] on w.metadata.peer_id via w.metadata.relay_id: res = UrlDownloader.get_n_save(url, fname) <- res -func put_workers(file_name: string, file_content: []u8) -> string: +-- functions to interact with workers deployed service +func put_workers(file_name: string, file_content: []u8) -> PutResult: info <- getWorkersInfo() spell = info.hosts.defaultWorker.installationSpells[0] on spell.workerId via spell.hostId: res <- UrlDownloader.put(file_name, file_content) <- res +--func get_workers(file_name: string) -> GetResult: func get_workers(file_name: string) -> []u8: info <- getWorkersInfo() spell = info.hosts.defaultWorker.installationSpells[0] on spell.workerId via spell.hostId: res <- UrlDownloader.get(file_name) - <- res + --<- res + <- res.stdout -func get_and_save_workers(url: string, fname: string) -> string: +func get_and_save_workers(url: string, fname: string) -> PutResult: info <- getWorkersInfo() spell = info.hosts.defaultWorker.installationSpells[0] on spell.workerId via spell.hostId: res = UrlDownloader.get_n_save(url, fname) - <- res \ No newline at end of file + <- res +