Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Simon János
/
orchestrator
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
A prog2-höz tartozó friss repo anyagok itt elérhetőek:
https://git.iit.bme.hu/
Commit
8267d5c4
authored
Dec 17, 2016
by
Simon János
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
calling deploy method from api; mocking celery in api tests
parent
09e73a8e
Pipeline
#296
passed with stage
in 3 minutes 57 seconds
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
36 additions
and
5 deletions
+36
-5
orchestrator/api/stacks.py
+18
-1
tests/test_api.py
+18
-4
No files found.
orchestrator/api/stacks.py
View file @
8267d5c4
...
...
@@ -36,8 +36,11 @@ class Stack(object):
if
request
.
content_length
:
req
=
request
.
stream
.
read
()
.
decode
(
'utf8'
)
stack
=
ResourceGroup
(
json
.
loads
(
req
))
flat_stack
=
stack
.
flatten
(
flat_leaves
=
False
)
self
.
__deploy_resources
(
flat_stack
)
self
.
stacks
[
stack
.
id
]
=
stack
response
.
body
=
str
(
stack
)
response
.
status
=
falcon
.
HTTP_CREATED
else
:
raise
falcon
.
HTTPBadRequest
(
'Empty request received'
)
...
...
@@ -46,14 +49,28 @@ class Stack(object):
update_body
=
request
.
stream
.
read
()
.
decode
(
'utf8'
)
updated_stack
=
json
.
loads
(
update_body
)
diff
=
self
.
stacks
[
stack_id
]
.
diff
(
ResourceGroup
(
updated_stack
),
flat_leaves
=
False
)
self
.
__deploy_resources
(
diff
[
'added'
])
response
.
body
=
json
.
dumps
(
diff
,
default
=
Resource
.
json_encoder
)
self
.
stacks
[
stack_id
]
=
updated_stack
else
:
raise
falcon
.
HTTPNotFound
()
def
on_delete
(
self
,
_request
,
_response
,
stack_id
):
def
__deploy_resources
(
self
,
flat_stack
):
results
=
{}
for
fqn
,
resource
in
flat_stack
.
items
():
results
[
fqn
]
=
resource
.
deploy
(
fqn
)
self
.
logger
.
info
(
'Deployment started:
%
s'
,
fqn
)
for
fqn
,
result
in
results
.
items
():
if
result
is
not
None
:
result
.
wait
(
timeout
=
cfg
.
CONF
.
rpc
.
operation_timeout
)
self
.
logger
.
info
(
'Deployment finished:
%
s (
%
s)'
,
fqn
,
result
.
status
)
else
:
self
.
logger
.
info
(
'Deployment status N/A of
%
s'
,
fqn
)
def
on_delete
(
self
,
_request
,
response
,
stack_id
):
if
stack_id
in
self
.
stacks
.
keys
():
del
self
.
stacks
[
stack_id
]
response
.
status
=
falcon
.
HTTP_NO_CONTENT
else
:
raise
falcon
.
HTTPNotFound
()
...
...
tests/test_api.py
View file @
8267d5c4
import
json
from
falcon
import
HTTP_OK
,
HTTP_METHOD_NOT_ALLOWED
,
HTTP_BAD_REQUEST
,
HTTP_NOT_FOUND
from
falcon.testing
import
TestCase
from
celery
import
Celery
from
falcon
import
HTTP_OK
,
HTTP_METHOD_NOT_ALLOWED
,
HTTP_BAD_REQUEST
,
HTTP_NOT_FOUND
,
HTTP_CREATED
,
HTTP_NO_CONTENT
from
falcon
import
testing
from
mockito
import
mock
,
when
,
any
# pylint: disable=redefined-builtin
from
orchestrator.api
import
stacks
...
...
@@ -10,10 +12,21 @@ TEST_INSTANCE_ARGS = {
'memory'
:
256
*
1000
*
1000
}
class
StackTest
(
TestCase
):
class
StackTest
(
testing
.
TestCase
):
def
setUp
(
self
):
super
(
StackTest
,
self
)
.
setUp
()
self
.
app
=
stacks
.
create_app
()
self
.
__mock_celery
()
def
__mock_celery
(
self
):
self
.
async_result_mock
=
mock
()
self
.
async_result_mock
.
status
=
'TEST_STATUS'
when
(
Celery
)
.
send_task
(
any
(),
args
=
any
(),
queue
=
any
())
.
thenReturn
(
self
.
async_result_mock
)
when
(
self
.
async_result_mock
)
.
wait
(
timeout
=
any
())
.
thenReturn
()
def
tearDown
(
self
):
super
(
StackTest
,
self
)
.
tearDown
()
def
test_stacks_api_allowed_methods_on_endpoints
(
self
):
self
.
assertEqual
(
HTTP_OK
,
self
.
simulate_get
(
'/stacks'
)
.
status
)
...
...
@@ -72,6 +85,7 @@ class StackTest(TestCase):
# then
self
.
assertEqual
(
sort_resources
(
stack_request_body
),
sort_resources
(
result
.
json
))
self
.
assertEqual
(
HTTP_CREATED
,
result
.
status
)
def
test_stacks_api_create_with_empty_json
(
self
):
# given
...
...
@@ -146,7 +160,7 @@ class StackTest(TestCase):
# then
self
.
assertEqual
([
resource
],
list_result_before_delete
.
json
)
self
.
assertEqual
(
HTTP_
OK
,
delete_result
.
status
)
self
.
assertEqual
(
HTTP_
NO_CONTENT
,
delete_result
.
status
)
self
.
assertEqual
([],
list_result_after_delete
.
json
)
def
test_stacks_api_get_list
(
self
):
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a 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