Skip to content
GitLab
Explore
Projects
Groups
Snippets
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
David Kosztka
Pod
Commits
6f206049
Commit
6f206049
authored
4 years ago
by
Bijun Li
Browse files
Options
Download
Plain Diff
Merge branch 'dev' into action-api
parents
2c253018
66f620b6
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
src/api_model.rs
+10
-0
src/api_model.rs
src/error.rs
+0
-30
src/error.rs
src/services_api.rs
+10
-27
src/services_api.rs
with
20 additions
and
57 deletions
+20
-57
src/api_model.rs
+
10
-
0
View file @
6f206049
...
...
@@ -122,3 +122,13 @@ pub struct RunService {
pub
struct
GetFile
{
pub
sha256
:
String
,
}
//
// Items:
//
#[derive(Serialize,
Deserialize,
Debug)]
#[serde(rename_all
=
"camelCase"
)]
pub
struct
RunIntegratorItem
{
pub
repository
:
String
,
}
This diff is collapsed.
Click to expand it.
src/error.rs
+
0
-
30
View file @
6f206049
...
...
@@ -87,33 +87,3 @@ impl<T> From<std::sync::PoisonError<T>> for Error {
}
}
}
impl
From
<
reqwest
::
Error
>
for
Error
{
fn
from
(
err
:
reqwest
::
Error
)
->
Error
{
let
msg
=
format!
(
"HTTP reqwest error {}"
,
err
);
Error
{
code
:
StatusCode
::
BAD_REQUEST
,
msg
,
}
}
}
impl
From
<
std
::
io
::
Error
>
for
Error
{
fn
from
(
err
:
std
::
io
::
Error
)
->
Error
{
let
msg
=
format!
(
"IO error {}"
,
err
);
Error
{
code
:
StatusCode
::
BAD_REQUEST
,
msg
,
}
}
}
impl
From
<
std
::
string
::
FromUtf8Error
>
for
Error
{
fn
from
(
err
:
std
::
string
::
FromUtf8Error
)
->
Error
{
let
msg
=
format!
(
"From Utf8 error {}"
,
err
);
Error
{
code
:
StatusCode
::
BAD_REQUEST
,
msg
,
}
}
}
This diff is collapsed.
Click to expand it.
src/services_api.rs
+
10
-
27
View file @
6f206049
use
crate
::
api_model
::
RunDownloader
;
use
crate
::
api_model
::
RunImporter
;
use
crate
::
api_model
::
RunIndexer
;
use
crate
::
api_model
::
RunIntegratorItem
;
use
crate
::
api_model
::
RunService
;
use
crate
::
command_line_interface
::
CLIOptions
;
use
crate
::
error
::
Error
;
...
...
@@ -8,7 +9,6 @@ use crate::error::Result;
use
crate
::
internal_api
;
use
log
::
info
;
use
rusqlite
::
Connection
;
use
std
::
env
;
use
std
::
ops
::
Deref
;
use
std
::
process
::
Command
;
use
warp
::
http
::
status
::
StatusCode
;
...
...
@@ -38,7 +38,7 @@ pub fn run_downloader(
args
.push
(
"--rm"
.to_string
());
args
.push
(
"--name=memri-downloaders_1"
.to_string
());
args
.push
(
format!
(
"--env=RUN_UID={}"
,
payload
.uid
));
args
.push
(
"--volume=
download
-volume:/usr/src/importers/data"
.to_string
());
args
.push
(
"--volume=
memri-integrators
-volume:/usr/src/importers/data"
.to_string
());
args
.push
(
"memri-downloaders:latest"
.to_string
());
log
::
debug!
(
"Starting downloader docker command {:?}"
,
args
);
let
command
=
Command
::
new
(
"docker"
)
.args
(
&
args
)
.spawn
();
...
...
@@ -63,29 +63,12 @@ pub fn run_importer(
cli_options
:
&
CLIOptions
,
)
->
Result
<
()
>
{
info!
(
"Trying to run importer on item {}"
,
payload
.uid
);
let
result
=
internal_api
::
get_item
(
conn
.deref
(),
payload
.uid
)
?
;
if
result
.first
()
.is_none
()
{
return
Err
(
Error
{
code
:
StatusCode
::
BAD_REQUEST
,
msg
:
format!
(
"Failed to get item {}"
,
payload
.uid
),
});
};
let
path
=
env
::
current_dir
()
?
;
let
parent
=
path
.parent
()
.expect
(
"Failed to get parent directory"
);
let
whatsapp_volume
=
format!
(
"--volume={}/importers/data-synapse:/usr/src/importers/data-synapse"
,
parent
.display
()
.to_string
()
);
let
docker_image
=
result
.first
()
.expect
(
"Failed to get ImporterRun item"
)
.as_object
()
.expect
(
"Failed to get value"
)
.get
(
"repository"
)
.expect
(
"Failed to get repository for docker image"
)
.as_str
()
.expect
(
"Failed to get string"
);
let
item
=
internal_api
::
get_item
(
conn
.deref
(),
payload
.uid
)
?
;
let
item
=
item
.into_iter
()
.next
()
.ok_or_else
(||
Error
{
code
:
StatusCode
::
BAD_REQUEST
,
msg
:
format!
(
"Failed to get item {}"
,
payload
.uid
),
})
?
;
let
item
:
RunIntegratorItem
=
serde_json
::
from_value
(
item
)
?
;
let
mut
args
:
Vec
<
String
>
=
Vec
::
new
();
args
.push
(
"run"
.to_string
());
for
arg
in
docker_arguments
(
cli_options
)
{
...
...
@@ -98,8 +81,8 @@ pub fn run_importer(
args
.push
(
"--rm"
.to_string
());
args
.push
(
"--name=memri-importers_1"
.to_string
());
args
.push
(
format!
(
"--env=RUN_UID={}"
,
payload
.uid
));
args
.push
(
whatsapp_volume
);
args
.push
(
format!
(
"{}:latest"
,
docker_image
)
);
args
.push
(
"--volume=memri-integrators-volume:/usr/src/importers/data"
.to_string
()
);
args
.push
(
item
.repository
);
log
::
debug!
(
"Starting importer docker command {:?}"
,
args
);
let
command
=
Command
::
new
(
"docker"
)
.args
(
&
args
)
.spawn
();
match
command
{
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Explore
Projects
Groups
Snippets