Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
K
kypo-ansible-runner
Manage
Activity
Members
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Locked files
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Terraform modules
Analyze
Contributor analytics
Repository analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
MUNI-KYPO-CRP
backend-python
kypo-ansible-runner
Commits
045ffc60
Commit
045ffc60
authored
3 years ago
by
Juraj Paluba
Browse files
Options
Downloads
Patches
Plain Diff
Resolve "Add attribute to entrypoint.sh for kypo-answers-storage API url"
parent
53e01937
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
entrypoint.sh
+3
-2
3 additions, 2 deletions
entrypoint.sh
manage_answers.py
+21
-19
21 additions, 19 deletions
manage_answers.py
with
24 additions
and
21 deletions
entrypoint.sh
+
3
−
2
View file @
045ffc60
...
...
@@ -2,11 +2,12 @@
usage
()
{
echo
"kypo-ansible-runner.sh -r [git repo url] -i [inventory file path]"
;
}
while
getopts
":u:r:i:h"
opt
;
do
while
getopts
":u:r:i:
a:
h"
opt
;
do
case
${
opt
}
in
u
)
REPO_URL
=
$OPTARG
;;
r
)
REVISION
=
$OPTARG
;;
i
)
INVENTORY
=
$OPTARG
;;
# realpath -e on some systems
a
)
ANSWERS_STORAGE_API
=
$OPTARG
;;
h
)
usage
exit
...
...
@@ -61,7 +62,7 @@ echo {} > "$ANSWERS_FILE"
VARIABLES_FILE
=
'variables.yml'
PREPARE_ANSWERS_PY
=
'../manage_answers.py'
if
[
-f
$VARIABLES_FILE
]
;
then
python3.8
"
$PREPARE_ANSWERS_PY
"
"
$INVENTORY_FILE
"
"
$ANSWERS_FILE
"
python3.8
"
$PREPARE_ANSWERS_PY
"
"
$INVENTORY_FILE
"
"
$ANSWERS_FILE
"
"
$ANSWERS_STORAGE_API
"
fi
git submodule update
--init
--recursive
||
exit
1
...
...
This diff is collapsed.
Click to expand it.
manage_answers.py
+
21
−
19
View file @
045ffc60
...
...
@@ -8,7 +8,6 @@ from generator.var_parser import parser_var_file
from
requests.exceptions
import
ConnectionError
,
HTTPError
VARIABLE_FILE_PATH
=
'
variables.yml
'
KYPO_ANSWERS_STORAGE_API_URL
=
'
http://answers-storage:8087/kypo-rest-answers-storage/api/v1
'
HEADERS
=
{
'
accept
'
:
'
application/json
'
,
'
Content-Type
'
:
'
application/json
'
...
...
@@ -20,8 +19,8 @@ def load_inventory_variables(inventory_path):
return
yaml
.
full_load
(
file
)[
'
all
'
][
'
vars
'
]
def
create_answers_file
(
generated_answers
,
answers_path
):
with
open
(
answers_path
,
'
w
'
)
as
file
:
def
create_answers_file
(
generated_answers
,
answers_
file_
path
):
with
open
(
answers_
file_
path
,
'
w
'
)
as
file
:
json
.
dump
(
generated_answers
,
file
)
...
...
@@ -51,44 +50,47 @@ def get_post_data_json(sandbox_id, generated_answers):
return
json
.
dumps
(
post_data
,
indent
=
4
)
def
get_answers
(
sandbox_id
):
return
requests
.
get
(
KYPO_ANSWERS_STORAGE_API_URL
+
'
/sandboxes/
'
+
str
(
sandbox_id
)
+
'
/answers
'
)
def
get_answers
(
answers_storage_api
,
sandbox_id
):
return
requests
.
get
(
answers_storage_api
+
'
/sandboxes/
'
+
str
(
sandbox_id
)
+
'
/answers
'
)
def
delete_answers
(
sandbox_id
):
return
requests
.
delete
(
KYPO_ANSWERS_STORAGE_API_URL
+
'
/sandboxes/
'
+
str
(
sandbox_id
))
def
delete_answers
(
answers_storage_api
,
sandbox_id
):
requests
.
delete
(
answers_storage_api
+
'
/sandboxes/
'
+
str
(
sandbox_id
))
.
raise_for_status
()
def
post_answers
(
sandbox_id
,
generated_answers
):
def
post_answers
(
answers_storage_api
,
sandbox_id
,
generated_answers
):
post_data_json
=
get_post_data_json
(
sandbox_id
,
generated_answers
)
post_response
=
requests
.
post
(
KYPO_ANSWERS_STORAGE_API_URL
+
'
/sandboxes
'
,
post_response
=
requests
.
post
(
answers_storage_api
+
'
/sandboxes
'
,
data
=
post_data_json
,
headers
=
HEADERS
)
post_response
.
raise_for_status
()
def
manage_answers
(
inventory_variables
,
generated_answers
):
def
manage_answers
(
inventory_variables
,
generated_answers
,
answers_storage_api
):
sandbox_id
=
inventory_variables
[
'
kypo_global_sandbox_allocation_unit_id
'
]
if
get_answers
(
sandbox_id
).
status_code
==
404
:
post_answers
(
sandbox_id
,
generated_answers
)
if
get_answers
(
answers_storage_api
,
sandbox_id
).
status_code
==
404
:
post_answers
(
answers_storage_api
,
sandbox_id
,
generated_answers
)
return
'
post
'
else
:
delete_
response
=
delete_answers
(
sandbox_id
)
delete_response
.
raise_for_status
()
delete_
answers
(
answers_storage_api
,
sandbox_id
)
return
'
delete
'
def
main
():
parser
=
argparse
.
ArgumentParser
()
parser
.
add_argument
(
'
inventory_path
'
)
parser
.
add_argument
(
'
answers_path
'
)
parser
.
add_argument
(
'
answers_file_path
'
)
parser
.
add_argument
(
'
answers_storage_api
'
)
args
=
parser
.
parse_args
()
inventory_variables
=
load_inventory_variables
(
args
.
inventory_path
)
answers_file_path
=
args
.
answers_file_path
answers_storage_api
=
args
.
answers_storage_api
generated_answers
=
generate_answers
(
inventory_variables
)
create_answers_file
(
generated_answers
,
args
.
answers_path
)
create_answers_file
(
generated_answers
,
answers_
file_
path
)
try
:
manage_answers
(
inventory_variables
,
generated_answers
)
print
(
'
\n
[OK]: Answers are generated successfully and uploaded to answers-storage
'
'
container.
\n
'
)
operation
=
manage_answers
(
inventory_variables
,
generated_answers
,
answers_storage_api
)
print
(
f
'
\n
[OK]: Operation [
{
operation
}
] upon answers-storage container was successful.
\n
'
)
except
ConnectionError
:
print
(
'
\n
[Warning]: Service answers-storage is unavailable.
\n
'
)
except
HTTPError
as
exc
:
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
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!
Save comment
Cancel
Please
register
or
sign in
to comment